mirror of
https://github.com/sheumann/hush.git
synced 2024-10-03 15:55:01 +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);
|
free(arg_path);
|
||||||
if (!input) {
|
if (!input) {
|
||||||
/* bb_perror_msg("%s", *argv); - done by fopen_or_warn */
|
/* 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;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
close_on_exec_on(fileno(input));
|
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" */
|
/* "we are inside sourced file, ok to use return" */
|
||||||
G.flag_return_in_progress = -1;
|
G.flag_return_in_progress = -1;
|
||||||
#endif
|
#endif
|
||||||
save_and_replace_G_args(&sv, argv);
|
if (argv[1])
|
||||||
|
save_and_replace_G_args(&sv, argv);
|
||||||
|
|
||||||
parse_and_run_file(input);
|
parse_and_run_file(input);
|
||||||
fclose(input);
|
fclose(input);
|
||||||
|
|
||||||
restore_G_args(&sv, argv);
|
if (argv[1])
|
||||||
|
restore_G_args(&sv, argv);
|
||||||
#if ENABLE_HUSH_FUNCTIONS
|
#if ENABLE_HUSH_FUNCTIONS
|
||||||
G.flag_return_in_progress = sv_flg;
|
G.flag_return_in_progress = sv_flg;
|
||||||
#endif
|
#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…
Reference in New Issue
Block a user