diff options
author | Rob Pike <r@golang.org> | 2008-09-22 17:31:41 -0700 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2008-09-22 17:31:41 -0700 |
commit | 827ab7518953e961d2cd7a402de1c0f03d67c409 (patch) | |
tree | eb6791d881e156fab04a116005a25803d2fa0792 | |
parent | 59c93ba300daa4a23b6b30da97864bf49af235bf (diff) | |
download | golang-827ab7518953e961d2cd7a402de1c0f03d67c409.tar.gz |
add os.Getenv()
R=rsc
DELTA=51 (50 added, 0 deleted, 1 changed)
OCL=15665
CL=15667
-rw-r--r-- | src/lib/os/Makefile | 3 | ||||
-rw-r--r-- | src/lib/os/os_env.go | 28 | ||||
-rw-r--r-- | test/env.go | 26 |
3 files changed, 56 insertions, 1 deletions
diff --git a/src/lib/os/Makefile b/src/lib/os/Makefile index e0ad76988..e2b741cd3 100644 --- a/src/lib/os/Makefile +++ b/src/lib/os/Makefile @@ -3,7 +3,7 @@ # license that can be found in the LICENSE file. # DO NOT EDIT. Automatically generated by gobuild. -# gobuild -m os os_error.go os_file.go os_time.go +# gobuild -m os os_error.go os_file.go os_time.go os_env.go O=6 GC=$(O)g CC=$(O)c -w @@ -36,6 +36,7 @@ O1=\ O2=\ os_file.$O\ os_time.$O\ + os_env.$O\ $(PKG): a1 a2 a1: $(O1) diff --git a/src/lib/os/os_env.go b/src/lib/os/os_env.go new file mode 100644 index 000000000..8559373ac --- /dev/null +++ b/src/lib/os/os_env.go @@ -0,0 +1,28 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Environment variables. +// Setenv doesn't exist yet: don't have the run-time hooks yet + +package os + +import os "os" + +export var ( + ENOENV = NewError("no such environment variable"); +) + +export func Getenv(s string) (v string, err *Error) { + n := len(s); + if n == 0 { + return "", EINVAL + } + for i := 0; i < sys.envc(); i++ { + e := sys.envv(i); + if len(e) > n && e[n] == '=' && e[0 : n] == s { + return e[n+1 : len(e)], nil + } + } + return "", ENOENV +} diff --git a/test/env.go b/test/env.go new file mode 100644 index 000000000..8b995f5b7 --- /dev/null +++ b/test/env.go @@ -0,0 +1,26 @@ +// $G $F.go && $L $F.$A && ./$A.out + +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import os "os" + +func main() { + ga, e0 := os.Getenv("GOARCH"); + if e0 != nil { + print("$GOARCH: ", e0.String(), "\n"); + sys.exit(1); + } + if ga != "amd64" { + print("$GOARCH=", ga, "\n"); + sys.exit(1); + } + xxx, e1 := os.Getenv("DOES_NOT_EXIST"); + if e1 != os.ENOENV { + print("$DOES_NOT_EXIST=", xxx, "; err = ", e1.String(), "\n"); + sys.exit(1); + } +} |