]> Cypherpunks repositories - gostls13.git/commitdiff
os: add LookupEnv, like Getenv but reports presence
authorRob Pike <r@golang.org>
Tue, 5 May 2015 18:17:08 +0000 (11:17 -0700)
committerRob Pike <r@golang.org>
Tue, 5 May 2015 21:05:12 +0000 (21:05 +0000)
Fixes #9676.

Change-Id: I32fe474cdfa09aff91daa4b10ac4df28ffdaa649
Reviewed-on: https://go-review.googlesource.com/9741
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/os/env.go
src/os/env_test.go

index 4bc6dade4438a6e50e67078dcf5cef3bcbb82274..a4ede15e61343651165638709017fe3d8f188fc2 100644 (file)
@@ -81,6 +81,15 @@ func Getenv(key string) string {
        return v
 }
 
+// LookupEnv retrieves the value of the environment variable named
+// by the key. If the variable is present in the environment the
+// value (which may be empty) is returned and the boolean is true.
+// Otherwise the returned value will be empty and the boolean will
+// be false.
+func LookupEnv(key string) (string, bool) {
+       return syscall.Getenv(key)
+}
+
 // Setenv sets the value of the environment variable named by the key.
 // It returns an error, if any.
 func Setenv(key, value string) error {
index e618067513725fd81843d5271fc7325344577272..622f39cfed120f0e1f5dc19b61e79b5cd8398811 100644 (file)
@@ -94,3 +94,15 @@ func TestUnsetenv(t *testing.T) {
                t.Fatal("Unsetenv didn't clear TestUnsetenv")
        }
 }
+
+func TestLookupEnv(t *testing.T) {
+       value, ok := LookupEnv("GOROOT") // Should be set.
+       if !ok {
+               t.Errorf("GOROOT is not set")
+       }
+       const v = "Variable That Does Not Exist"
+       value, ok = LookupEnv(v) // Should not be set.
+       if ok || value != "" {
+               t.Errorf("%s is set: %q", v, value)
+       }
+}