aboutsummaryrefslogtreecommitdiffstats
path: root/testing/erlang/otp-0008-Introduce-os-getenv-2.patch
blob: 6c48db2122df6c582b4cfe68e4cce040ccf820de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Sat, 8 Nov 2014 15:11:04 +0300
Subject: [PATCH] Introduce os:getenv/2

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>

diff --git a/lib/kernel/doc/src/os.xml b/lib/kernel/doc/src/os.xml
index 2b57e75..8b85f24 100644
--- a/lib/kernel/doc/src/os.xml
+++ b/lib/kernel/doc/src/os.xml
@@ -100,6 +100,19 @@ DirOut = os:cmd("dir"), % on Win32 platform</code>
       </desc>
     </func>
     <func>
+      <name name="getenv" arity="2"/>
+      <fsummary>Get the value of an environment variable</fsummary>
+      <desc>
+        <p>Returns the <c><anno>Value</anno></c> of the environment variable
+          <c><anno>VarName</anno></c>, or <c>DefaultValue</c> if the environment variable
+          is undefined.</p>
+	<p>If Unicode file name encoding is in effect (see the <seealso
+	marker="erts:erl#file_name_encoding">erl manual
+	page</seealso>), the strings (both <c><anno>VarName</anno></c> and
+	<c><anno>Value</anno></c>) may contain characters with codepoints > 255.</p>
+      </desc>
+    </func>
+    <func>
       <name name="getpid" arity="0"/>
       <fsummary>Return the process identifier of the emulator process</fsummary>
       <desc>
diff --git a/lib/kernel/src/os.erl b/lib/kernel/src/os.erl
index 187fd00..8aaf13b 100644
--- a/lib/kernel/src/os.erl
+++ b/lib/kernel/src/os.erl
@@ -26,7 +26,7 @@
 
 %%% BIFs
 
--export([getenv/0, getenv/1, getpid/0, putenv/2, timestamp/0, unsetenv/1]).
+-export([getenv/0, getenv/1, getenv/2, getpid/0, putenv/2, timestamp/0, unsetenv/1]).
 
 -spec getenv() -> [string()].
 
@@ -39,6 +39,19 @@ getenv() -> erlang:nif_error(undef).
 getenv(_) ->
     erlang:nif_error(undef).
 
+-spec getenv(VarName, DefaultValue) -> Value when
+      VarName :: string(),
+      DefaultValue :: string(),
+      Value :: string().
+
+getenv(VarName, DefaultValue) ->
+    case os:getenv(VarName) of
+        false ->
+           DefaultValue;
+        Value ->
+            Value
+    end.
+
 -spec getpid() -> Value when
       Value :: string().