diff options
author | Fredrik Gustafsson <[email protected]> | 2013-11-18 10:00:46 +0100 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2013-11-18 10:00:46 +0100 |
commit | 04f5e4e820f792b3f07dd232f582e6a7e0a3d3f7 (patch) | |
tree | 676a2c175d7b2e6fe993344409db35137d8186e5 /erts/emulator/beam | |
parent | 22b3a285aadffdb02f04230b78c167f52f7d7bc1 (diff) | |
parent | b2e4599affa6718bba60ef3846d130513e9a740d (diff) | |
download | otp-04f5e4e820f792b3f07dd232f582e6a7e0a3d3f7.tar.gz otp-04f5e4e820f792b3f07dd232f582e6a7e0a3d3f7.tar.bz2 otp-04f5e4e820f792b3f07dd232f582e6a7e0a3d3f7.zip |
Merge branch 'maint'
Conflicts:
bootstrap/lib/kernel/ebin/os.beam
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 7c8e4b31cf..b6cce84cdd 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 # # New in R17A 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); |