[git commit] hush: fix ". EMPTY_LINE" not setting $? to 0

Denys Vlasenko vda.linux at googlemail.com
Wed Sep 28 23:27:09 UTC 2016


commit: https://git.busybox.net/busybox/commit/?id=992e0ff7e9a71a85a89d4fb7b4e6ace7ba74e2ba
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash_test/ash-misc/source3.right   | 2 ++
 shell/ash_test/ash-misc/source3.tests   | 6 ++++++
 shell/hush.c                            | 2 ++
 shell/hush_test/hush-misc/source3.right | 2 ++
 shell/hush_test/hush-misc/source3.tests | 6 ++++++
 5 files changed, 18 insertions(+)

diff --git a/shell/ash_test/ash-misc/source3.right b/shell/ash_test/ash-misc/source3.right
new file mode 100644
index 0000000..bdf9001
--- /dev/null
+++ b/shell/ash_test/ash-misc/source3.right
@@ -0,0 +1,2 @@
+Zero:0
+Zero:0
diff --git a/shell/ash_test/ash-misc/source3.tests b/shell/ash_test/ash-misc/source3.tests
new file mode 100755
index 0000000..1abf156
--- /dev/null
+++ b/shell/ash_test/ash-misc/source3.tests
@@ -0,0 +1,6 @@
+# Test both empty file, and one-empty-line file
+echo >sourced1
+true >sourced2
+false; . ./sourced1; echo Zero:$?
+false; . ./sourced2; echo Zero:$?
+rm sourced1 sourced2
diff --git a/shell/hush.c b/shell/hush.c
index e2b0a15..5698de6 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -9156,6 +9156,8 @@ static int FAST_FUNC builtin_source(char **argv)
 	if (argv[1])
 		save_and_replace_G_args(&sv, argv);
 
+	/* "false; . ./empty_line; echo Zero:$?" should print 0 */
+	G.last_exitcode = 0;
 	parse_and_run_file(input);
 	fclose_and_forget(input);
 
diff --git a/shell/hush_test/hush-misc/source3.right b/shell/hush_test/hush-misc/source3.right
new file mode 100644
index 0000000..bdf9001
--- /dev/null
+++ b/shell/hush_test/hush-misc/source3.right
@@ -0,0 +1,2 @@
+Zero:0
+Zero:0
diff --git a/shell/hush_test/hush-misc/source3.tests b/shell/hush_test/hush-misc/source3.tests
new file mode 100755
index 0000000..1abf156
--- /dev/null
+++ b/shell/hush_test/hush-misc/source3.tests
@@ -0,0 +1,6 @@
+# Test both empty file, and one-empty-line file
+echo >sourced1
+true >sourced2
+false; . ./sourced1; echo Zero:$?
+false; . ./sourced2; echo Zero:$?
+rm sourced1 sourced2


More information about the busybox-cvs mailing list