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:
parent
29f3526048
commit
438b4ac286
2 changed files with 8 additions and 1 deletions
|
@ -16,7 +16,7 @@ int FAST_FUNC xgetpty(char *line)
|
||||||
|
|
||||||
#if ENABLE_FEATURE_DEVPTS
|
#if ENABLE_FEATURE_DEVPTS
|
||||||
p = open("/dev/ptmx", O_RDWR);
|
p = open("/dev/ptmx", O_RDWR);
|
||||||
if (p > 0) {
|
if (p >= 0) {
|
||||||
grantpt(p); /* chmod+chown corresponding slave pty */
|
grantpt(p); /* chmod+chown corresponding slave pty */
|
||||||
unlockpt(p); /* (what does this do?) */
|
unlockpt(p); /* (what does this do?) */
|
||||||
# ifndef HAVE_PTSNAME_R
|
# ifndef HAVE_PTSNAME_R
|
||||||
|
|
|
@ -77,8 +77,15 @@ int script_main(int argc UNUSED_PARAM, char **argv)
|
||||||
if (!(opt & OPT_q)) {
|
if (!(opt & OPT_q)) {
|
||||||
printf("Script started, file is %s\n", fname);
|
printf("Script started, file is %s\n", fname);
|
||||||
}
|
}
|
||||||
|
|
||||||
shell = get_shell_name();
|
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);
|
pty = xgetpty(pty_line);
|
||||||
|
|
||||||
/* get current stdin's tty params */
|
/* get current stdin's tty params */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue