961faf1
From: Peter Lemenkov <lemenkov@gmail.com>
961faf1
Date: Sat, 8 Nov 2014 15:11:04 +0300
961faf1
Subject: [PATCH] Introduce os:getenv/2
961faf1
961faf1
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
961faf1
961faf1
diff --git a/lib/kernel/doc/src/os.xml b/lib/kernel/doc/src/os.xml
961faf1
index 9122267..7ec1f8e 100644
961faf1
--- a/lib/kernel/doc/src/os.xml
961faf1
+++ b/lib/kernel/doc/src/os.xml
961faf1
@@ -100,6 +100,19 @@ DirOut = os:cmd("dir"), % on Win32 platform
961faf1
       </desc>
961faf1
     </func>
961faf1
     <func>
961faf1
+      <name name="getenv" arity="2"/>
961faf1
+      <fsummary>Get the value of an environment variable</fsummary>
961faf1
+      <desc>
961faf1
+        

Returns the <c><anno>Value</anno></c> of the environment variable

961faf1
+          <c><anno>VarName</anno></c>, or <c>DefaultValue</c> if the environment variable
961faf1
+          is undefined.

961faf1
+	

If Unicode file name encoding is in effect (see the

961faf1
+	marker="erts:erl#file_name_encoding">erl manual
961faf1
+	page</seealso>), the strings (both <c><anno>VarName</anno></c> and
961faf1
+	<c><anno>Value</anno></c>) may contain characters with codepoints > 255.

961faf1
+      </desc>
961faf1
+    </func>
961faf1
+    <func>
961faf1
       <name name="getpid" arity="0"/>
961faf1
       <fsummary>Return the process identifier of the emulator process</fsummary>
961faf1
       <desc>
961faf1
diff --git a/lib/kernel/src/os.erl b/lib/kernel/src/os.erl
961faf1
index 9415593..d5ef994 100644
961faf1
--- a/lib/kernel/src/os.erl
961faf1
+++ b/lib/kernel/src/os.erl
961faf1
@@ -26,7 +26,7 @@
961faf1
 
961faf1
 %%% BIFs
961faf1
 
961faf1
--export([getenv/0, getenv/1, getpid/0, putenv/2, timestamp/0, unsetenv/1]).
961faf1
+-export([getenv/0, getenv/1, getenv/2, getpid/0, putenv/2, timestamp/0, unsetenv/1]).
961faf1
 
961faf1
 -spec getenv() -> [string()].
961faf1
 
961faf1
@@ -39,6 +39,19 @@ getenv() -> erlang:nif_error(undef).
961faf1
 getenv(_) ->
961faf1
     erlang:nif_error(undef).
961faf1
 
961faf1
+-spec getenv(VarName, DefaultValue) -> Value when
961faf1
+      VarName :: string(),
961faf1
+      DefaultValue :: string(),
961faf1
+      Value :: string().
961faf1
+
961faf1
+getenv(VarName, DefaultValue) ->
961faf1
+    case os:getenv(VarName) of
961faf1
+        false ->
961faf1
+           DefaultValue;
961faf1
+        Value ->
961faf1
+            Value
961faf1
+    end.
961faf1
+
961faf1
 -spec getpid() -> Value when
961faf1
       Value :: string().
961faf1