diff options
author | Yuval Pavel Zholkover <paulzhol@gmail.com> | 2011-06-08 09:44:03 -0400 |
---|---|---|
committer | Yuval Pavel Zholkover <paulzhol@gmail.com> | 2011-06-08 09:44:03 -0400 |
commit | 95cbc35496da8b02a739c667802ba9725e4e41e7 (patch) | |
tree | 9f37a3bd2a9fcd428f032ff614747090ad2039fe | |
parent | 344704c401ae4c2cf31680dcc56f22b44ff77219 (diff) | |
download | go-95cbc35496da8b02a739c667802ba9725e4e41e7.tar.gz |
os: fix Getenv for Plan 9. Truncate the rightmost char if it is '\0'.
R=mirtchovski, ality, taruti, rsc
CC=golang-dev
http://codereview.appspot.com/4386046
Committer: Russ Cox <rsc@golang.org>
-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 14df55ed0..1fed89f92 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 } |