diff options
author | Yuval Pavel Zholkover <paulzhol@gmail.com> | 2011-06-08 09:44:03 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2011-06-08 09:44:03 -0400 |
commit | 6c746328f79d4767deb212ebc12fe06d90eb7ecb (patch) | |
tree | 2b438b967c00e1896cd95d594b5e62a7da9f2f27 | |
parent | ddde52ae5612706cb529b964dd3a27adb3e0ae0b (diff) | |
download | go-6c746328f79d4767deb212ebc12fe06d90eb7ecb.tar.gz go-6c746328f79d4767deb212ebc12fe06d90eb7ecb.zip |
os: fix Getenv for Plan 9. Truncate the rightmost char if it is '\0'.
R=mirtchovski, ality, taruti, rsc
CC=golang-dev
https://golang.org/cl/4386046
-rw-r--r-- | src/pkg/os/env_plan9.go | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/pkg/os/env_plan9.go b/src/pkg/os/env_plan9.go index 14df55ed0e..1fed89f927 100644 --- a/src/pkg/os/env_plan9.go +++ b/src/pkg/os/env_plan9.go @@ -23,13 +23,18 @@ func Getenverror(key string) (value string, err Error) { } defer f.Close() - var buf [4096]byte - n, e := f.Read(buf[:len(buf)-1]) + l, _ := f.Seek(0, 2) + f.Seek(0, 0) + buf := make([]byte, l) + n, e := f.Read(buf) if iserror(e) { return "", ENOENV } - buf[n] = 0 - return string(buf[0:n]), nil + + if n > 0 && buf[n-1] == 0 { + buf = buf[:n-1] + } + return string(buf), nil } // Getenv retrieves the value of the environment variable named by the key. @@ -52,7 +57,7 @@ func Setenv(key, value string) Error { } defer f.Close() - _, e = f.Write(syscall.StringByteSlice(value)) + _, e = f.Write([]byte(value)) return nil } |