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
redir1.tests
redir2.right
redir2.tests
redir3.right
redir3.tests
redir4.right
redir4.tests
redir5.right
redir5.tests
redir6.right
redir6.tests
redir7.right
redir7.tests
redir8.right
redir8.tests
redir9.right
redir9.tests
redir_children_should_not_see_saved_fd_1.right
redir_children_should_not_see_saved_fd_1.tests
redir_children_should_not_see_saved_fd_2.right
redir_children_should_not_see_saved_fd_2.tests
redir_children_should_not_see_saved_fd_3.right
redir_children_should_not_see_saved_fd_3.tests
redir_escapednum.right
redir_escapednum.tests
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
redir_expand.tests
redir_leak.right
redir_leak.tests
redir_multi.right
redir_multi.tests
redir_script.right
redir_script.tests hush: fix nested redirects colliding with script fds 2018-07-24 16:54:41 +02:00
redir_space.right
redir_space.tests
redir_to_bad_fd3.right
redir_to_bad_fd3.tests
redir_to_bad_fd255.right
redir_to_bad_fd255.tests
redir_to_bad_fd.right
redir_to_bad_fd.tests
redir.right
redir.tests
redirA.right
redirA.tests