diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/environment.c | 2 | ||||
| -rw-r--r-- | src/stdlib/stdlib.c | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/environment.c b/src/environment.c index 88a15bb5..43d22c3d 100644 --- a/src/environment.c +++ b/src/environment.c @@ -540,7 +540,7 @@ env_t *global_env(bool source_mapping) { {"getenv", "getenv_text", "func(name:Text -> Text?)"}, {"print", "say", "func(text:Text, newline=yes)"}, {"say", "say", "func(text:Text, newline=yes)"}, - {"setenv", "setenv_text", "func(name:Text, value:Text -> Text?)"}, + {"setenv", "setenv_text", "func(name:Text, value:Text?)"}, {"sleep", "sleep_num", "func(seconds:Num)"}, }; diff --git a/src/stdlib/stdlib.c b/src/stdlib/stdlib.c index 21547efe..8ec9e90b 100644 --- a/src/stdlib/stdlib.c +++ b/src/stdlib/stdlib.c @@ -219,7 +219,10 @@ OptionalText_t getenv_text(Text_t name) { } public -void setenv_text(Text_t name, Text_t value) { setenv(Text$as_c_string(name), Text$as_c_string(value), 1); } +void setenv_text(Text_t name, OptionalText_t value) { + if (value.tag == TEXT_NONE) unsetenv(Text$as_c_string(name)); + else setenv(Text$as_c_string(name), Text$as_c_string(value), 1); +} typedef struct cleanup_s { Closure_t cleanup_fn; |
