From: Rob Pike Date: Tue, 23 Sep 2008 00:31:41 +0000 (-0700) Subject: add os.Getenv() X-Git-Tag: weekly.2009-11-06~3145 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4d12c0e1705840b28d2d7c3585e7394b11c0ee16;p=gostls13.git add os.Getenv() R=rsc DELTA=51 (50 added, 0 deleted, 1 changed) OCL=15665 CL=15667 --- diff --git a/src/lib/os/Makefile b/src/lib/os/Makefile index e0ad769888..e2b741cd39 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 0000000000..8559373ac1 --- /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 0000000000..8b995f5b7c --- /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); + } +}