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

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

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

0156fcd
+	

If Unicode file name encoding is in effect (see the

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

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