diff options
author | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2015-05-15 09:20:13 -0400 |
---|---|---|
committer | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2015-05-15 09:20:13 -0400 |
commit | 681a5d8b52b7c5725c54bdab507c3c63effad142 (patch) | |
tree | d14808f1c9e8f02514ac68295391c13d4361aca6 /main.c | |
parent | 3cb8fca4531cb348984bfc5ff499fbd1e1036f69 (diff) | |
download | egawk-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.c | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -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; } |