busybox/shell/ash_test/ash-redir
Denys Vlasenko 41ef41b3e0 hush: fix nested redirects colliding with script fds
This necessitates switch from libc FILE api to a simple
homegrown replacement.
The change which fixes the bug here is the deleting of

	restore_redirected_FILEs();

line. It was prematurely moving (restoring) script fd#3.
The fix is: we don't even _want_ to restore scrit fds,
we are perfectly fine with them being moved.
The only reason we tried to restore them is that FILE api
did not allow moving of FILE->fd.

function                                             old     new   delta
refill_HFILE_and_getc                                  -      93     +93
hfopen                                                 -      90     +90
hfclose                                                -      66     +66
pseudo_exec_argv                                     591     597      +6
hush_main                                           1089    1095      +6
builtin_source                                       209     214      +5
save_fd_on_redirect                                  197     200      +3
setup_redirects                                      320     321      +1
fgetc_interactive                                    235     236      +1
i_peek_and_eat_bkslash_nl                             99      97      -2
expand_vars_to_list                                 1103    1100      -3
restore_redirects                                     99      52     -47
fclose_and_forget                                     57       -     -57
remember_FILE                                         63       -     -63
------------------------------------------------------------------------------
(add/remove: 3/2 grow/shrink: 6/3 up/down: 271/-172)           Total: 99 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2018-07-24 16:54:41 +02:00
..
redir1.right sh testsuite: create hush-redir/* and move files around 2016-10-02 17:55:51 +02:00
redir1.tests sh testsuite: create hush-redir/* and move files around 2016-10-02 17:55:51 +02:00
redir2.right ash: fix a bug where redirection fds were not closed afterwards. 2008-07-24 19:46:38 +00:00
redir2.tests ash: fix a bug where redirection fds were not closed afterwards. 2008-07-24 19:46:38 +00:00
redir3.right ash: fix a bug where redirection fds were not closed afterwards. 2008-07-24 19:46:38 +00:00
redir3.tests ash: fix testsuite false positives 2010-05-18 14:11:21 +02:00
redir4.right ash: prevent exec NN>&- from closing fd used for script reading 2008-07-24 22:34:43 +00:00
redir4.tests ash: prevent exec NN>&- from closing fd used for script reading 2008-07-24 22:34:43 +00:00
redir5.right shell: sync redir/* tests 2017-07-06 21:01:50 +02:00
redir5.tests shell: sync redir/* tests 2017-07-06 21:01:50 +02:00
redir6.right ash: fix "(cat < file)" hang introduced by rev 22944. 2008-08-16 11:48:02 +00:00
redir6.tests ash: fix "(cat < file)" hang introduced by rev 22944. 2008-08-16 11:48:02 +00:00
redir7.right ash: add testsuite for bug 585 2009-08-29 20:37:09 +02:00
redir7.tests ash testsuite: remove two more inadvertent bashisms 2016-10-01 17:43:04 +02:00
redir8.right add a testcase for reopened bug 585 (not fixed yet) 2009-09-16 14:04:07 +02:00
redir8.tests ash testsuite: remove two more inadvertent bashisms 2016-10-01 17:43:04 +02:00
redir9.right ash: <> redir should not truncate 2010-06-24 04:32:37 +02:00
redir9.tests ash: add a testcase for bug 2281 (currently fails). Small code cleanups. 2010-08-05 17:19:27 +02:00
redir_children_should_not_see_saved_fd_1.right ash,hush: fix "saved" redirected fds still visible in children 2018-03-28 18:35:07 +02:00
redir_children_should_not_see_saved_fd_1.tests ash,hush: fix "saved" redirected fds still visible in children 2018-03-28 18:35:07 +02:00
redir_children_should_not_see_saved_fd_2.right ash,hush: fix "saved" redirected fds still visible in children 2018-03-28 18:35:07 +02:00
redir_children_should_not_see_saved_fd_2.tests ash,hush: fix "saved" redirected fds still visible in children 2018-03-28 18:35:07 +02:00
redir_children_should_not_see_saved_fd_3.right ash,hush: fix "saved" redirected fds still visible in children 2018-03-28 18:35:07 +02:00
redir_children_should_not_see_saved_fd_3.tests ash,hush: fix "saved" redirected fds still visible in children 2018-03-28 18:35:07 +02:00
redir_escapednum.right sh testsuite: sync ash-redir/ and hush-redir/ 2016-10-02 18:32:52 +02:00
redir_escapednum.tests sh testsuite: sync ash-redir/ and hush-redir/ 2016-10-02 18:32:52 +02:00
redir_exec1.right hush: do not drop backslash from eval 'echo ok\' 2018-04-11 01:15:33 +02:00
redir_exec1.tests hush: fix corner cases with exec in empty expansions 2018-04-05 14:41:21 +02:00
redir_expand.right sh testsuite: sync ash-redir/ and hush-redir/ 2016-10-02 18:32:52 +02:00
redir_expand.tests sh testsuite: sync ash-redir/ and hush-redir/ 2016-10-02 18:32:52 +02:00
redir_leak.right ash: fix open fds leaking in redirects. Closes 9561 2017-01-07 10:16:56 +01:00
redir_leak.tests ash: fix open fds leaking in redirects. Closes 9561 2017-01-07 10:16:56 +01:00
redir_multi.right sh testsuite: sync ash-redir/ and hush-redir/ 2016-10-02 18:32:52 +02:00
redir_multi.tests sh testsuite: sync ash-redir/ and hush-redir/ 2016-10-02 18:32:52 +02:00
redir_script.right sh testsuite: create hush-redir/* and move files around 2016-10-02 17:55:51 +02:00
redir_script.tests hush: fix nested redirects colliding with script fds 2018-07-24 16:54:41 +02:00
redir_space.right sh testsuite: create hush-redir/* and move files around 2016-10-02 17:55:51 +02:00
redir_space.tests sh testsuite: create hush-redir/* and move files around 2016-10-02 17:55:51 +02:00
redir_to_bad_fd3.right ash: significant overhaul of redirect saving logic 2017-07-31 04:21:46 +02:00
redir_to_bad_fd3.tests ash: significant overhaul of redirect saving logic 2017-07-31 04:21:46 +02:00
redir_to_bad_fd255.right ash: significant overhaul of redirect saving logic 2017-07-31 04:21:46 +02:00
redir_to_bad_fd255.tests ash: significant overhaul of redirect saving logic 2017-07-31 04:21:46 +02:00
redir_to_bad_fd.right ash: rename redir5.tests (hush has redir5.tests which is different) 2017-07-06 21:00:19 +02:00
redir_to_bad_fd.tests ash: rename redir5.tests (hush has redir5.tests which is different) 2017-07-06 21:00:19 +02:00
redir.right echo: do not retry on write errors 2011-02-07 02:03:51 +01:00
redir.tests
redirA.right ash: fix a bug in >${varexp} handling. Closes 5282 2012-06-09 02:06:57 +02:00
redirA.tests ash: fix a bug in >${varexp} handling. Closes 5282 2012-06-09 02:06:57 +02:00