script: make it work even if fd 0 is closed

Testcase:
script -q -c "echo hey" /dev/null 0>&-

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2014-03-16 12:34:53 +01:00
parent 29f3526048
commit 438b4ac286
2 changed files with 8 additions and 1 deletions

View File

@ -16,7 +16,7 @@ int FAST_FUNC xgetpty(char *line)
#if ENABLE_FEATURE_DEVPTS
p = open("/dev/ptmx", O_RDWR);
if (p > 0) {
if (p >= 0) {
grantpt(p); /* chmod+chown corresponding slave pty */
unlockpt(p); /* (what does this do?) */
# ifndef HAVE_PTSNAME_R

View File

@ -77,8 +77,15 @@ int script_main(int argc UNUSED_PARAM, char **argv)
if (!(opt & OPT_q)) {
printf("Script started, file is %s\n", fname);
}
shell = get_shell_name();
/* Some people run "script ... 0>&-".
* Our code assumes that STDIN_FILENO != pty.
* Ensure STDIN_FILENO is not closed:
*/
bb_sanitize_stdio();
pty = xgetpty(pty_line);
/* get current stdin's tty params */