[PATCH 3/3] Do not set $0 in functions

Alan Dunn amdunn at google.com
Thu Mar 3 03:59:04 AEDT 2016


GRUB2 does not set $0 in functions, so don't set it in our GRUB2
script parser.  (As it doesn't have a value in GRUB2 scripts, probably
no GRUB2 script depends on the value of $0.)  Additionally, dash and
bash set environment variable 0 to the name of the script (even in
functions), so the current behavior of $0 doesn't really match shell
scripts either.

Tested:
 Existing tests pass.

Signed-off-by: Alan Dunn <amdunn at google.com>
---
 discover/grub2/script.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/discover/grub2/script.c b/discover/grub2/script.c
index 48c963e..ed81a20 100644
--- a/discover/grub2/script.c
+++ b/discover/grub2/script.c
@@ -379,7 +379,7 @@ static int function_invoke(struct grub2_script *script,
 	int i;
 
 	/* set positional parameters */
-	for (i = 0; i < argc; i++) {
+	for (i = 1; i < argc; i++) {
 		name = talloc_asprintf(script, "%d", i);
 		script_env_set(script, name, argv[i]);
 	}
-- 
2.7.0.rc3.207.g0ac5344



More information about the Petitboot mailing list