Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Sep 2010 22:31:03 +0000 (UTC)
From:      "David E. O'Brien" <obrien@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r212770 - head/usr.bin/script
Message-ID:  <201009162231.o8GMV3Ov009118@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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]);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009162231.o8GMV3Ov009118>