From 681a5d8b52b7c5725c54bdab507c3c63effad142 Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Fri, 15 May 2015 09:20:13 -0400 Subject: Add PROCINFO["argv"] array to contain the command-line arguments. --- main.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'main.c') diff --git a/main.c b/main.c index ef4f8550..b17ab309 100644 --- a/main.c +++ b/main.c @@ -892,6 +892,33 @@ load_environ() return ENVIRON_node; } +static void +load_procinfo_argv() +{ + NODE *tmp; + NODE **aptr; + NODE *argv_array; + int i; + + tmp = make_string("argv", 4); + aptr = assoc_lookup(PROCINFO_node, tmp); + unref(tmp); + unref(*aptr); + getnode(argv_array); + memset(argv_array, '\0', sizeof(NODE)); /* valgrind wants this */ + null_array(argv_array); + *aptr = argv_array; + argv_array->parent_array = PROCINFO_node; + argv_array->vname = estrdup("argv", 4); + for (i = 0; d_argv[i] != NULL; i++) { + tmp = make_number(i); + aptr = assoc_lookup(argv_array, tmp); + unref(tmp); + unref(*aptr); + *aptr = make_string(d_argv[i], strlen(d_argv[i])); + } +} + /* load_procinfo --- populate the PROCINFO array */ static NODE * @@ -991,6 +1018,7 @@ load_procinfo() groupset = NULL; } #endif + load_procinfo_argv(); return PROCINFO_node; } -- cgit v1.2.3