summaryrefslogtreecommitdiffstats
path: root/usr.bin/script/script.c
Commit message (Collapse)AuthorAgeFilesLines
* MFS r296911:bdrewery2016-03-151-4/+10
| | | | | | | Filemon: Attach from the child to avoid racing with the parent attach. Relnotes: yes Approved by: re (marius)
* MFC r260833:trociny2014-01-201-3/+6
| | | | | | | | Bring back r226403, the fix for bin/161526, which was (accidentally?) reverted in r238896. PR: bin/161526 Reported by: Karli.Sjoberg slu.se
* Add "-f" to also output filemon(4) information.obrien2012-10-261-9/+46
|
* Don't include both <sys/param.h> & <sys/types.h>.obrien2012-10-231-6/+1
|
* Add d, p and r switches for recording script sessions with timing databrian2012-07-301-22/+196
| | | | | | | | and playing sessions back with or without time delays. PR: 114465 Submitted by: ighighi at gmail dot com MFC after: 3 weeks
* In r225809 the intention was to send VEOF only once if STDIN was not atrociny2011-10-151-3/+6
| | | | | | | | | | | | | | | | terminal. Unfortunately the fix was incorrect and for flushtime > 0 it keept sending VEOF. Sent VEOF generates ^D\b\b echoed by the terminal, which was reported in bin/161526. Note, we still send VEOF at least once. Otherwise commands like below would hang forever: echo 1 |script /tmp/script.out cat PR: bin/161526 Reported by: Adrian Wontroba <aw1@stade.co.uk>, Stefan Bethke <stb@lassitu.de> Tested by: Stefan Bethke <stb@lassitu.de> MFC after: 3 days
* When script(1) reads EOF from input it starts spinning on zero-bytetrociny2011-09-271-12/+20
| | | | | | | | | | | | | | | | reads eating 100% CPU. Fix this by skipping select on STDIN after reading EOF -- permanently if STDIN is not terminal and for one second if it is. Also after reading EOF from STDIN we have to pass it to the program being scripted. The previous approach was to write zero bytes into the pseudo-terminal. This does not work because zero-byte write does not have any effect on read. Fix this by sending VEOF instead. Submitted by: Ronald Klop <ronald-freebsd8@klop.yi.org> Discussed with: kib, Chris Torek <chris.torek@gmail.com> Approved by: kib MFC after: 1 week
* Remove the advertising clause from UCB copyrighted files in usr.bin. Thisjoel2010-12-111-4/+0
| | | | | | | | | is in accordance with the information provided at ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change Also add $FreeBSD$ to a few files to keep svn happy. Discussed with: imp, rwatson
* + Add the SCRIPT environmental variable to the sub-shell. Its value isobrien2010-09-161-0/+7
| | | | | | | | 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.
* Mark functions and variables as static.ed2010-08-161-15/+14
| | | | | | All these functions and variables are local to this compilation unit, so there is no reason why we shouldn't mark them static. This slightly reduces the binary size.
* Remove WNOHANG flag from wait3().ed2010-04-301-15/+9
| | | | | | | | | | | | | | Because script(1) now reliably terminates when the TTY is closed, it may be the case that the call to wait3() occurs just before the child process exits. This causes error codes to be ignored. Just change script(1) to use waitpid() instead of wait3(). This makes it more portable and prevents the need for a loop, since waitpid() only returns a specified process. PR: bin/146189 Tested by: amdmi3@, older version MFC after: 2 weeks
* Improve the change made in the previous commit.ed2010-03-111-2/+1
| | | | | doshell() never returns, so there is no need to see whether we are the parent process.
* Make script(1) a little less broken.ed2010-03-111-0/+2
| | | | | | | | | Close the file descriptor to the TTY. There is no reason why the parent process should keep track of the descriptor. This ensures that the application inside properly drains the TTY during exit(2). Reported by: alfred MFC after: 2 weeks
* Remove a warning by adding extra parentheses.ed2010-01-021-1/+1
| | | | | GCC generates warnings when using "if (foo = bar)". In this case its use is valid.
* Attempt #2 to fix script(1) if the standard input is closed: If wecperciva2004-02-151-1/+3
| | | | | | | | | | | | | | | | read EOF from STDIN_FILENO, write zero bytes into the pseudo-terminal; this is interpreted as an EOF by the program being scripted. I've tested this with two non-interactive scripts: # echo 5 | script foo sh -c 'read x; sleep $x; echo bar' # echo bar | xargs script foo echo and one interactive program: # script foo more /etc/passwd and everything seems to work properly... PR: bin/56166, bin/57414, ports/57415, ports/60534 Approved by: rwatson (mentor) MFC after: 2 weeks
* Back out part of 1.21, since it breaks `script interactive-program`. Thiscperciva2004-01-271-2/+1
| | | | | | | | | re-breaks non-interactive portupgrade (or at least old versions of portupgrade); I'll see if I can put together a solution which avoids breaking anything later. Approved by: rwatson (mentor) Noticed by: Stefan Farfeleder, Joshua Goodall
* Fix SYNOPSIS of manual page, clustering no-arg options correctly.sheldonh2004-01-221-1/+1
| | | | Sync usage with manpage.
* Two fixes for script(1):cperciva2004-01-221-11/+22
| | | | | | | | | | | | | 1. Don't do tty stuff to stdin if stdin isn't a tty. 2. When running in non-interactive mode, don't select(2) on the standard input. This un-breaks non-interactive portupgrade. PR: bin/59036 [1] PR: bin/56166, bin/57414, ports/57415, ports/60534 [2] MFC after: 7 days Approved by: rwatson (mentor)
* ANSIify function definitions.dwmalone2002-09-041-10/+6
| | | | | | | | | Add some constness to avoid some warnings. Remove use register keyword. Deal with missing/unneeded extern/prototypes. Some minor type changes/casts to avoid warnings. Reviewed by: md5
* Use POSIX macros for wait(2)-style status information instead of themike2002-06-031-3/+3
| | | | | deprecated 4.2/4.3BSD wait union. Fix some nearby pid_t/int confusion.
* remove __Pimp2002-03-221-6/+6
|
* Minor style stuff, use __FBSDID(), remove to-be-default WARNS=2.markm2001-12-121-8/+8
|
* Warns cleanups. Add FreeBSD ID.dwmalone2001-12-031-2/+2
|
* Use STD{ERR,IN,OUT}_FILENO instead of their numeric values. Thesheldonh2001-07-261-1/+1
| | | | | | | definitions are more readable, and it's possible that they're more portable to pathalogical platforms. Submitted by: David Hill <david@phobia.ms>
* Fix the type of the NULL arg to execl()brian2001-07-091-1/+1
| | | | Idea from: Theo de Raadt <deraadt@openbsd.org>
* Nuke unused variables.dd2001-06-241-1/+0
|
* Don't call warn() with no format string.kris2000-07-101-2/+2
|
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Pass as argv[0] the name of the shell executed instead of "sh".sheldonh1999-08-111-2/+2
| | | | | | PR: 2851 Reported by: era@iki.fi Obtained from: NetBSD
* Fix the following bugs:des1998-09-191-19/+27
| | | | | | | | | | | | | | | | | - if a command was specified and script(1) failed to execute it, it would print the name of your shell in the error message instead of that of the command that failed. - since finish() was installed as a SIGCHLD handler, it would often run before the main loop had had time to process the last few bytes of output. This resulted in very strange truncated error messages. - script(1) would almost always return with an exit status of 0, even if the command returned a non-zero exit status. This broke my 'build world, install it and rebuild the kernel' scripts because 'make installworld' would run even if 'make buildworld' had failed.
* Rewrite script as a select loop rather than as a twin reader/write process.peter1998-03-081-72/+78
| | | | | This allows simple logging of keys sent to a session (turned on with -k). Also allow specifying the script file flush interval.
* Fix typo while copying patch from the 2.2 system that it came frompeter1997-12-301-3/+3
| | | | Use execvp rather than execv so that full paths are not needed.
* script(1) has annoyed me with it's inflexable command argument parsingpeter1997-12-291-13/+27
| | | | | since I first saw it. I finally needed to pass arguments through to the spawned command badly enough (and urgently) that I threw this together.
* Add usage(). Use err(3) instead of local redefinition.charnier1997-08-081-39/+21
|
* compare return value from getopt against -1 rather than EOF, per the finalimp1997-03-291-1/+1
| | | | posix standard on the topic.
* Don't use __dead or __pure in user code. They were obfuscationsbde1996-09-141-7/+7
| | | | | | for gcc >= 2.5 and no-ops for gcc >= 2.6. Converted to use __dead2 or __pure2 where it wasn't already done, except in math.h where use of __pure was mostly wrong.
* Delete bogus referneces to timezone code internal header file `tzfile.h',wollman1995-08-071-2/+1
| | | | which is no longer bogusly installed in /usr/include.
* BSD 4.4 Lite Usr.bin Sourcesrgrimes1994-05-271-0/+268
OpenPOWER on IntegriCloud