mirror of
https://github.com/sheumann/hush.git
synced 2025-02-22 10:29:10 +00:00
hush: source builtin should override $N only if it has args
function old new delta builtin_source 174 184 +10 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
4ef1439c59
commit
88b532d59a
@ -8880,6 +8880,9 @@ static int FAST_FUNC builtin_source(char **argv)
|
||||
free(arg_path);
|
||||
if (!input) {
|
||||
/* bb_perror_msg("%s", *argv); - done by fopen_or_warn */
|
||||
/* POSIX: non-interactive shell should abort here,
|
||||
* not merely fail. So far no one complained :)
|
||||
*/
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
close_on_exec_on(fileno(input));
|
||||
@ -8889,12 +8892,14 @@ static int FAST_FUNC builtin_source(char **argv)
|
||||
/* "we are inside sourced file, ok to use return" */
|
||||
G.flag_return_in_progress = -1;
|
||||
#endif
|
||||
save_and_replace_G_args(&sv, argv);
|
||||
if (argv[1])
|
||||
save_and_replace_G_args(&sv, argv);
|
||||
|
||||
parse_and_run_file(input);
|
||||
fclose(input);
|
||||
|
||||
restore_G_args(&sv, argv);
|
||||
if (argv[1])
|
||||
restore_G_args(&sv, argv);
|
||||
#if ENABLE_HUSH_FUNCTIONS
|
||||
G.flag_return_in_progress = sv_flg;
|
||||
#endif
|
||||
|
4
shell/hush_test/hush-misc/source2.right
Normal file
4
shell/hush_test/hush-misc/source2.right
Normal file
@ -0,0 +1,4 @@
|
||||
0:arg0 1:arg1 2:arg2
|
||||
Ok1:0
|
||||
0:arg0 1:q 2:w
|
||||
Ok2:0
|
8
shell/hush_test/hush-misc/source2.tests
Executable file
8
shell/hush_test/hush-misc/source2.tests
Executable file
@ -0,0 +1,8 @@
|
||||
echo 'echo "0:$0 1:$1 2:$2"' >sourced1
|
||||
set -- 1 2 3
|
||||
"$THIS_SH" -c '. ./sourced1' arg0 arg1 arg2
|
||||
echo Ok1:$?
|
||||
"$THIS_SH" -c '. ./sourced1 q w e' arg0 arg1 arg2
|
||||
echo Ok2:$?
|
||||
|
||||
rm sourced1
|
Loading…
x
Reference in New Issue
Block a user