diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-03-08 06:16:41 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-03-08 06:16:41 -0800 |
commit | 685786b3715e984fb37929dfac9891924f60d811 (patch) | |
tree | f5d543f87ec7ad22d5c1f7d28b6927d6d6931932 /sysif.c | |
parent | d61e8cacdaea0235f564a7e966c5742bc1f010d8 (diff) | |
download | txr-685786b3715e984fb37929dfac9891924f60d811.tar.gz txr-685786b3715e984fb37929dfac9891924f60d811.tar.bz2 txr-685786b3715e984fb37929dfac9891924f60d811.zip |
Allow nil value in setenv.
* sysif.c (setenv_wrap): If value is nil, and overwrite is
missing or t, call unsetenv.
* txr.1: Documented.
Diffstat (limited to 'sysif.c')
-rw-r--r-- | sysif.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -703,8 +703,12 @@ val getenv_wrap(val name) static val setenv_wrap(val name, val value, val overwrite) { char *nameu8 = utf8_dup_to(c_str(name)); - char *valu8 = utf8_dup_to(c_str(value)); - setenv(nameu8, valu8, default_arg(overwrite, t) != nil); + char *valu8 = value ? utf8_dup_to(c_str(value)) : 0; + int ovw = default_arg(overwrite, t) != nil; + if (valu8) + setenv(nameu8, valu8, ovw); + else if (ovw) + unsetenv(nameu8); free(valu8); free(nameu8); return value; |