svn commit: r212770 - head/usr.bin/script
David E. O'Brien
obrien at FreeBSD.org
Thu Sep 16 22:31:04 UTC 2010
Author: obrien
Date: Thu Sep 16 22:31:03 2010
New Revision: 212770
URL: http://svn.freebsd.org/changeset/base/212770
Log:
+ Add the SCRIPT environmental variable to the sub-shell. Its value is
the name of the typescript file.
+ Add the 'command' argument (if supplied on the command line) to the
typescript file. This creates a more complete typescript when invoked
this way - more equal to invoking script without supplying the 'command'
argument.
Modified:
head/usr.bin/script/script.1
head/usr.bin/script/script.c
Modified: head/usr.bin/script/script.1
==============================================================================
--- head/usr.bin/script/script.1 Thu Sep 16 22:11:55 2010 (r212769)
+++ head/usr.bin/script/script.1 Thu Sep 16 22:31:03 2010 (r212770)
@@ -117,6 +117,19 @@ The results are meant to emulate a hardc
The following environment variable is utilized by
.Nm :
.Bl -tag -width SHELL
+.It Ev SCRIPT
+The
+.Ev SCRIPT
+environment variable is added to the sub-shell.
+If
+.Ev SCRIPT
+already existed in the users environment,
+its value is overwritten within the sub-shell.
+The value of
+.Ev SCRIPT
+is the name of the
+.Ar typescript
+file.
.It Ev SHELL
If the variable
.Ev SHELL
Modified: head/usr.bin/script/script.c
==============================================================================
--- head/usr.bin/script/script.c Thu Sep 16 22:11:55 2010 (r212769)
+++ head/usr.bin/script/script.c Thu Sep 16 22:31:03 2010 (r212770)
@@ -235,14 +235,21 @@ static void
doshell(char **av)
{
const char *shell;
+ int k;
shell = getenv("SHELL");
if (shell == NULL)
shell = _PATH_BSHELL;
+ if (av[0])
+ for (k = 0 ; av[k] ; ++k)
+ fprintf(fscript, "%s%s", k ? " " : "", av[k]);
+ fprintf(fscript, "\r\n");
+
(void)close(master);
(void)fclose(fscript);
login_tty(slave);
+ setenv("SCRIPT", fname, 1);
if (av[0]) {
execvp(av[0], av);
warn("%s", av[0]);
More information about the svn-src-head
mailing list