aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Pavel Zholkover <paulzhol@gmail.com>2011-06-08 09:44:03 -0400
committerRuss Cox <rsc@golang.org>2011-06-08 09:44:03 -0400
commit6c746328f79d4767deb212ebc12fe06d90eb7ecb (patch)
tree2b438b967c00e1896cd95d594b5e62a7da9f2f27
parentddde52ae5612706cb529b964dd3a27adb3e0ae0b (diff)
downloadgo-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.go15
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
}