diff options
author | Juergen Kahrs <Juergen.Kahrs@vr-web.de> | 2012-03-20 17:44:53 +0100 |
---|---|---|
committer | Juergen Kahrs <Juergen.Kahrs@vr-web.de> | 2012-03-20 17:44:53 +0100 |
commit | c40211033292efb689bfca1819d9d34fd1e3b8cd (patch) | |
tree | cd19a8981da4953a9fdd063c36776a76161e0001 /main.c | |
parent | 2dcf0c1084fafc7bb4d8ff5435a228ce90c408f8 (diff) | |
parent | b51edf37c4271bf5ec5dcad9d35169f55e38efa9 (diff) | |
download | egawk-c40211033292efb689bfca1819d9d34fd1e3b8cd.tar.gz egawk-c40211033292efb689bfca1819d9d34fd1e3b8cd.tar.bz2 egawk-c40211033292efb689bfca1819d9d34fd1e3b8cd.zip |
Merge branch 'xgawk' of ssh://git.sv.gnu.org/srv/git/gawk into xgawk
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 41 |
1 files changed, 26 insertions, 15 deletions
@@ -973,6 +973,29 @@ init_vars() /* load_environ --- populate the ENVIRON array */ +static void +path_environ(const char *pname, const char *dflt) +{ + char *val; + NODE **aptr; + NODE *tmp; + + tmp = make_string(pname, strlen(pname)); + if (! in_array(ENVIRON_node, tmp)) { + /* + * On VMS, environ[] only holds a subset of what getenv() can + * find, so look AWKPATH up before resorting to default path. + */ + val = getenv(pname); + if (val == NULL) + val = dflt; + aptr = assoc_lookup(ENVIRON_node, tmp); + unref(*aptr); + *aptr = make_string(val, strlen(val)); + } + unref(tmp); +} + static NODE * load_environ() { @@ -1006,23 +1029,11 @@ load_environ() *--val = '='; } /* - * Put AWKPATH into ENVIRON if it's not there. + * Put AWKPATH and AWKLIBPATh into ENVIRON if not already there. * This allows querying it from within awk programs. */ - tmp = make_string("AWKPATH", 7); - if (! in_array(ENVIRON_node, tmp)) { - /* - * On VMS, environ[] only holds a subset of what getenv() can - * find, so look AWKPATH up before resorting to default path. - */ - val = getenv("AWKPATH"); - if (val == NULL) - val = defpath; - aptr = assoc_lookup(ENVIRON_node, tmp); - unref(*aptr); - *aptr = make_string(val, strlen(val)); - } - unref(tmp); + path_environ("AWKPATH", defpath); + path_environ("AWKLIBPATH", deflibpath); return ENVIRON_node; } |