busybox/shell/ash_test/ash-heredoc
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
..
heredoc1.right shell: syncronize ash and hush heredoc1.tests 2017-07-06 18:16:18 +02:00
heredoc1.tests shell: syncronize ash and hush heredoc1.tests 2017-07-06 18:16:18 +02:00
heredoc2.right
heredoc2.tests
heredoc3.right shell: syncronize ash and hush heredoc3.tests 2017-07-06 18:19:35 +02:00
heredoc3.tests shell: syncronize ash and hush heredoc3.tests 2017-07-06 18:19:35 +02:00
heredoc4.right ash: bash-compatible $'...' shouldn't expand in double quotes 2016-04-15 22:16:46 +02:00
heredoc4.tests ash: bash-compatible $'...' shouldn't expand in double quotes 2016-04-15 22:16:46 +02:00
heredoc5.right sh testsuite: create hush-heredoc/* and move files around 2016-10-02 17:49:46 +02:00
heredoc5.tests sh testsuite: create hush-heredoc/* and move files around 2016-10-02 17:49:46 +02:00
heredoc6.right ash: [PARSER] Recognise here-doc delimiters terminated by EOF 2016-10-26 16:26:45 +02:00
heredoc6.tests ash: [PARSER] Recognise here-doc delimiters terminated by EOF 2016-10-26 16:26:45 +02:00
heredoc7.right ash: [PARSER] Recognise here-doc delimiters terminated by EOF 2016-10-26 16:26:45 +02:00
heredoc7.tests ash: [PARSER] Recognise here-doc delimiters terminated by EOF 2016-10-26 16:26:45 +02:00
heredoc8.right shell: syncronize ash and hush heredoc1.tests 2017-07-06 18:16:18 +02:00
heredoc8.tests shell: syncronize ash and hush heredoc1.tests 2017-07-06 18:16:18 +02:00
heredoc9.right shell: syncronize ash and hush heredoc3.tests 2017-07-06 18:19:35 +02:00
heredoc9.tests shell: syncronize ash and hush heredoc3.tests 2017-07-06 18:19:35 +02:00
heredoc_after_compound1.right hush: fix handling of heredocs not enclosed in groups where they are "declared" 2018-07-24 13:03:03 +02:00
heredoc_after_compound1.tests hush: fix handling of heredocs not enclosed in groups where they are "declared" 2018-07-24 13:03:03 +02:00
heredoc_backquote1.right parser: Fix backquote support in here-document EOF mark 2018-04-01 16:38:32 +02:00
heredoc_backquote1.tests parser: Fix backquote support in here-document EOF mark 2018-04-01 16:38:32 +02:00
heredoc_backslash1.right ash: use pgetc_eatbnl() in more places 2018-03-31 19:40:56 +02:00
heredoc_backslash1.tests ash: use pgetc_eatbnl() in more places 2018-03-31 19:40:56 +02:00
heredoc_bkslash_newline1.right ash: use pgetc_eatbnl() in more places 2018-03-31 19:40:56 +02:00
heredoc_bkslash_newline1.tests ash: use pgetc_eatbnl() in more places 2018-03-31 19:40:56 +02:00
heredoc_bkslash_newline2.right hush: handle backslash-newline in heredoc terminators 2018-07-24 14:03:18 +02:00
heredoc_bkslash_newline2.tests hush: handle backslash-newline in heredoc terminators 2018-07-24 14:03:18 +02:00
heredoc_empty2.right hush: fix handling of empty heredoc EOF marker 2017-07-29 20:43:26 +02:00
heredoc_empty2.tests hush: fix handling of empty heredoc EOF marker 2017-07-29 20:43:26 +02:00
heredoc_empty3.right hush: fix handling of heredocs starting with empty lines 2018-07-23 15:43:57 +02:00
heredoc_empty3.tests hush: fix handling of heredocs starting with empty lines 2018-07-23 15:43:57 +02:00
heredoc_empty.right ash: [PARSER] Removed noexpand/length check on eofmark 2017-07-29 19:57:28 +02:00
heredoc_empty.tests ash: [PARSER] Removed noexpand/length check on eofmark 2017-07-29 19:57:28 +02:00
heredoc_huge.right ash testsuite: add most of hust tests which pass for ash 2016-10-03 00:06:55 +02:00
heredoc_huge.tests ash testsuite: add most of hust tests which pass for ash 2016-10-03 00:06:55 +02:00
heredoc_var_expand1.right ash: parser: Fix single-quoted patterns in here-documents 2018-04-02 13:29:20 +02:00
heredoc_var_expand1.tests ash: parser: Fix single-quoted patterns in here-documents 2018-04-02 13:29:20 +02:00
heredoc.right
heredoc.tests
heredocA.right hush: fix heredoc handling in the "cmd <<EOF ;<newline>" case 2018-07-23 16:31:21 +02:00
heredocA.tests hush: fix heredoc handling in the "cmd <<EOF ;<newline>" case 2018-07-23 16:31:21 +02:00
heredocB.right hush: fix nested redirects colliding with script fds 2018-07-24 16:54:41 +02:00
heredocB.tests hush: fix nested redirects colliding with script fds 2018-07-24 16:54:41 +02:00