From 4d12c0e1705840b28d2d7c3585e7394b11c0ee16 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Mon, 22 Sep 2008 17:31:41 -0700 Subject: [PATCH] add os.Getenv() R=rsc DELTA=51 (50 added, 0 deleted, 1 changed) OCL=15665 CL=15667 --- src/lib/os/Makefile | 3 ++- src/lib/os/os_env.go | 28 ++++++++++++++++++++++++++++ test/env.go | 26 ++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/lib/os/os_env.go create mode 100644 test/env.go 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); + } +} -- 2.48.1