Commit Graph

24 Commits

Author SHA1 Message Date
cperciva
c18f783c24 Attempt #2 to fix script(1) if the standard input is closed: If we
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
2004-02-15 17:30:13 +00:00
cperciva
b6735e4f04 Back out part of 1.21, since it breaks script interactive-program. This
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
2004-01-27 17:50:47 +00:00
sheldonh
20ebc4dba3 Fix SYNOPSIS of manual page, clustering no-arg options correctly.
Sync usage with manpage.
2004-01-22 21:26:41 +00:00
cperciva
11be4e1db7 Two fixes for script(1):
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)
2004-01-22 21:01:14 +00:00
dwmalone
e3e153e6ce ANSIify function definitions.
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
2002-09-04 23:29:10 +00:00
mike
d8cc828c9a Use POSIX macros for wait(2)-style status information instead of the
deprecated 4.2/4.3BSD wait union.  Fix some nearby pid_t/int
confusion.
2002-06-03 23:13:11 +00:00
imp
6b8e9d623c remove __P 2002-03-22 01:42:45 +00:00
markm
900aa724d0 Minor style stuff, use __FBSDID(), remove to-be-default WARNS=2. 2001-12-12 23:23:52 +00:00
dwmalone
e5d1b394b1 Warns cleanups. Add FreeBSD ID. 2001-12-03 21:22:56 +00:00
sheldonh
beb35793ec Use STD{ERR,IN,OUT}_FILENO instead of their numeric values. The
definitions are more readable, and it's possible that they're
more portable to pathalogical platforms.

Submitted by:   David Hill <david@phobia.ms>
2001-07-26 11:02:39 +00:00
brian
34ad3e29c4 Fix the type of the NULL arg to execl()
Idea from: Theo de Raadt <deraadt@openbsd.org>
2001-07-09 09:24:06 +00:00
dd
9f9a695939 Nuke unused variables. 2001-06-24 23:41:57 +00:00
kris
1bd6ae3627 Don't call warn() with no format string. 2000-07-10 09:18:19 +00:00
peter
e4b04a2b21 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
sheldonh
a1a29325a0 Pass as argv[0] the name of the shell executed instead of "sh".
PR:	2851
Reported by:	era@iki.fi
Obtained from:	NetBSD
1999-08-11 23:45:59 +00:00
des
a340a668b2 Fix the following bugs:
- 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.
1998-09-19 09:45:42 +00:00
peter
d4db5d77ab Rewrite script as a select loop rather than as a twin reader/write process.
This allows simple logging of keys sent to a session (turned on with -k).
Also allow specifying the script file flush interval.
1998-03-08 14:19:18 +00:00
peter
dbe0c21126 Fix typo while copying patch from the 2.2 system that it came from
Use execvp rather than execv so that full paths are not needed.
1997-12-30 01:20:08 +00:00
peter
c676b1b45f script(1) has annoyed me with it's inflexable command argument parsing
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.
1997-12-29 13:31:46 +00:00
charnier
a5dc16017a Add usage(). Use err(3) instead of local redefinition. 1997-08-08 12:24:49 +00:00
imp
cd84ece5fd compare return value from getopt against -1 rather than EOF, per the final
posix standard on the topic.
1997-03-29 04:34:07 +00:00
bde
071f2afd3e Don't use __dead or __pure in user code. They were obfuscations
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.
1996-09-14 03:00:32 +00:00
wollman
01cdce9796 Delete bogus referneces to timezone code internal header file `tzfile.h',
which is no longer bogusly installed in /usr/include.
1995-08-07 19:17:46 +00:00
rgrimes
f9ab90d9d6 BSD 4.4 Lite Usr.bin Sources 1994-05-27 12:33:43 +00:00