diff options
author | Fredrik Gustafsson <[email protected]> | 2013-11-18 09:37:42 +0100 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2013-11-18 09:37:42 +0100 |
commit | b2e4599affa6718bba60ef3846d130513e9a740d (patch) | |
tree | 116115e2a365d204eb7b1ffc706ad8a9c69bf3fa /erts/emulator/beam | |
parent | f07816ab2826d2a4082442f1d8ca71b7bfb89a47 (diff) | |
parent | 22c39699f35142063f69c45bdb919bcba468fede (diff) | |
download | otp-b2e4599affa6718bba60ef3846d130513e9a740d.tar.gz otp-b2e4599affa6718bba60ef3846d130513e9a740d.tar.bz2 otp-b2e4599affa6718bba60ef3846d130513e9a740d.zip |
Merge branch 'mhssler/add-os-unsetenv/OTP-11446' into maint
* mhssler/add-os-unsetenv/OTP-11446:
erts: remove ?line macro in testcases
Update primary bootstrap
Add os:unsetenv/1
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r-- | erts/emulator/beam/bif.tab | 1 | ||||
-rw-r--r-- | erts/emulator/beam/erl_bif_os.c | 22 | ||||
-rw-r--r-- | erts/emulator/beam/sys.h | 2 |
3 files changed, 25 insertions, 0 deletions
diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab index dc8e9101de..6037c08dd8 100644 --- a/erts/emulator/beam/bif.tab +++ b/erts/emulator/beam/bif.tab @@ -572,6 +572,7 @@ bif erlang:float_to_binary/2 bif erlang:binary_to_float/1 bif io:printable_range/0 +bif os:unsetenv/1 # # Obsolete diff --git a/erts/emulator/beam/erl_bif_os.c b/erts/emulator/beam/erl_bif_os.c index 1062d4379b..e07c622928 100644 --- a/erts/emulator/beam/erl_bif_os.c +++ b/erts/emulator/beam/erl_bif_os.c @@ -180,3 +180,25 @@ BIF_RETTYPE os_putenv_2(BIF_ALIST_2) BIF_RET(am_true); } +BIF_RETTYPE os_unsetenv_1(BIF_ALIST_1) +{ + char *key_buf; + char buf[STATIC_BUF_SIZE]; + + key_buf = erts_convert_filename_to_native(BIF_ARG_1,buf,STATIC_BUF_SIZE, + ERTS_ALC_T_TMP,0,0,NULL); + if (!key_buf) { + BIF_ERROR(BIF_P, BADARG); + } + + if (erts_sys_unsetenv(key_buf)) { + if (key_buf != buf) { + erts_free(ERTS_ALC_T_TMP, key_buf); + } + BIF_ERROR(BIF_P, BADARG); + } + if (key_buf != buf) { + erts_free(ERTS_ALC_T_TMP, key_buf); + } + BIF_RET(am_true); +} diff --git a/erts/emulator/beam/sys.h b/erts/emulator/beam/sys.h index 9561c0be96..d22f125945 100644 --- a/erts/emulator/beam/sys.h +++ b/erts/emulator/beam/sys.h @@ -750,6 +750,8 @@ int erts_sys_getenv(char *key, char *value, size_t *size); int erts_sys_getenv_raw(char *key, char *value, size_t *size); /* erts_sys_getenv__() is only allowed to be used in early init phase */ int erts_sys_getenv__(char *key, char *value, size_t *size); +/* erst_sys_unsetenv() returns 0 on success and a value != 0 on failure. */ +int erts_sys_unsetenv(char *key); /* Easier to use, but not as efficient, environment functions */ char *erts_read_env(char *key); |