Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
3611-kernel-Add-os-env-0.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 3611-kernel-Add-os-env-0.patch of Package erlang
From 021f9aeaebee25b71ac5b06f7a5662d1358dfde1 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson <sverker@erlang.org> Date: Thu, 3 Sep 2020 15:27:34 +0200 Subject: [PATCH] kernel: Add os:env/0 as a nicer name for undocumented os:list_env_vars/0 --- erts/emulator/beam/bif.tab | 2 +- erts/emulator/beam/erl_bif_os.c | 2 +- lib/kernel/doc/src/os.xml | 17 +++++++++++++++++ lib/kernel/src/os.erl | 8 ++++---- lib/kernel/test/os_SUITE.erl | 15 +++++++++++++++ 5 files changed, 38 insertions(+), 6 deletions(-) diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab index d1920bd072..a7e45c0da6 100644 --- a/erts/emulator/beam/bif.tab +++ b/erts/emulator/beam/bif.tab @@ -394,7 +394,7 @@ bif ets:match_spec_run_r/3 bif os:get_env_var/1 bif os:set_env_var/2 bif os:unset_env_var/1 -bif os:list_env_vars/0 +bif os:env/0 bif os:getpid/0 bif os:timestamp/0 bif os:system_time/0 diff --git a/erts/emulator/beam/erl_bif_os.c b/erts/emulator/beam/erl_bif_os.c index ce2b27409b..65302b99f9 100644 --- a/erts/emulator/beam/erl_bif_os.c +++ b/erts/emulator/beam/erl_bif_os.c @@ -77,7 +77,7 @@ static void os_getenv_foreach(Process *process, Eterm *result, Eterm key, Eterm (*result) = CONS(hp, kvp_term, (*result)); } -BIF_RETTYPE os_list_env_vars_0(BIF_ALIST_0) +BIF_RETTYPE os_env_0(BIF_ALIST_0) { const erts_osenv_t *global_env; Eterm result = NIL; diff --git a/lib/kernel/doc/src/os.xml b/lib/kernel/doc/src/os.xml index 666aca988f..33b8dbcdb7 100644 --- a/lib/kernel/doc/src/os.xml +++ b/lib/kernel/doc/src/os.xml @@ -172,6 +172,21 @@ DirOut = os:cmd("dir"), % on Win32 platform</code> </desc> </func> + <func> + <name name="env" arity="0" since="OTP 24.0"/> + <fsummary>List all environment variables.</fsummary> + <desc> + <p>Returns a list of all environment variables. + Each environment variable is expressed as a tuple + <c>{VarName,Value}</c>, where <c>VarName</c> is the name of + the variable and <c>Value</c> its value.</p> + <p>If Unicode filename encoding is in effect (see the + <seecom marker="erts:erl#file_name_encoding"><c>erl</c> manual + page</seecom>), the strings can contain characters with + codepoints > 255.</p> + </desc> + </func> + <func> <name name="find_executable" arity="1" since=""/> <name name="find_executable" arity="2" since=""/> @@ -201,6 +216,8 @@ DirOut = os:cmd("dir"), % on Win32 platform</code> <seecom marker="erts:erl#file_name_encoding"><c>erl</c> manual page</seecom>), the strings can contain characters with codepoints > 255.</p> + <p>Consider using <seemfa marker="#env/0"><c>env/0</c></seemfa> + for a nicer 2-tuple format.</p> </desc> </func> diff --git a/lib/kernel/src/os.erl b/lib/kernel/src/os.erl index b1488f1390..27c40ff5c1 100644 --- a/lib/kernel/src/os.erl +++ b/lib/kernel/src/os.erl @@ -31,7 +31,7 @@ %%% BIFs --export([get_env_var/1, getpid/0, list_env_vars/0, perf_counter/0, +-export([get_env_var/1, getpid/0, env/0, perf_counter/0, perf_counter/1, set_env_var/2, set_signal/2, system_time/0, system_time/1, timestamp/0, unset_env_var/1]). @@ -46,8 +46,8 @@ -type env_var_name_value() :: nonempty_string(). --spec list_env_vars() -> [{env_var_name(), env_var_value()}]. -list_env_vars() -> +-spec env() -> [{env_var_name(), env_var_value()}]. +env() -> erlang:nif_error(undef). -spec get_env_var(VarName) -> Value | false when @@ -115,7 +115,7 @@ set_signal(_Signal, _Option) -> -spec getenv() -> [env_var_name_value()]. getenv() -> - [lists:flatten([Key, $=, Value]) || {Key, Value} <- os:list_env_vars() ]. + [lists:flatten([Key, $=, Value]) || {Key, Value} <- os:env() ]. -spec getenv(VarName) -> Value | false when VarName :: env_var_name(), diff --git a/lib/kernel/test/os_SUITE.erl b/lib/kernel/test/os_SUITE.erl index e952dec625..ad089132bd 100644 --- a/lib/kernel/test/os_SUITE.erl +++ b/lib/kernel/test/os_SUITE.erl @@ -23,6 +23,7 @@ init_per_group/2,end_per_group/2, init_per_testcase/2,end_per_testcase/2]). -export([space_in_cwd/1, quoting/1, cmd_unicode/1, + env/1, null_in_command/1, space_in_name/1, bad_command/1, find_executable/1, unix_comment_in_command/1, deep_list_command/1, large_output_command/1, background_command/0, background_command/1, @@ -38,6 +39,7 @@ suite() -> all() -> [space_in_cwd, quoting, cmd_unicode, null_in_command, space_in_name, bad_command, + env, find_executable, unix_comment_in_command, deep_list_command, large_output_command, background_command, message_leak, close_stdin, max_size_command, perf_counter_api]. @@ -71,6 +73,19 @@ init_per_testcase(_TC,Config) -> end_per_testcase(_,_Config) -> ok. +env(Config) when is_list(Config) -> + Env0 = os:env(), + GetEnv0 = os:getenv(), + lists:foldl(fun({K,V}, [KV | T]) -> + KV = K ++ "=" ++ V, + V = os:getenv(K), + V = os:getenv(K, default), + T + end, + GetEnv0, + Env0), + ok. + %% Test that executing a command in a current working directory %% with space in its name works. space_in_cwd(Config) when is_list(Config) -> -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor