aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorAndrew J. Schorr <aschorr@telemetry-investments.com>2015-05-15 09:20:13 -0400
committerAndrew J. Schorr <aschorr@telemetry-investments.com>2015-05-15 09:20:13 -0400
commit681a5d8b52b7c5725c54bdab507c3c63effad142 (patch)
treed14808f1c9e8f02514ac68295391c13d4361aca6 /main.c
parent3cb8fca4531cb348984bfc5ff499fbd1e1036f69 (diff)
downloadegawk-681a5d8b52b7c5725c54bdab507c3c63effad142.tar.gz
egawk-681a5d8b52b7c5725c54bdab507c3c63effad142.tar.bz2
egawk-681a5d8b52b7c5725c54bdab507c3c63effad142.zip
Add PROCINFO["argv"] array to contain the command-line arguments.
Diffstat (limited to 'main.c')
-rw-r--r--main.c28
1 files changed, 28 insertions, 0 deletions
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;
}