]> Cypherpunks repositories - gostls13.git/commitdiff
os: fix Getenv for Plan 9. Truncate the rightmost char if it is '\0'.
authorYuval Pavel Zholkover <paulzhol@gmail.com>
Wed, 8 Jun 2011 13:44:03 +0000 (09:44 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 8 Jun 2011 13:44:03 +0000 (09:44 -0400)
R=mirtchovski, ality, taruti, rsc
CC=golang-dev
https://golang.org/cl/4386046

src/pkg/os/env_plan9.go

index 14df55ed0edd8a1cdef4adc82c91a8c30f1ad32f..1fed89f92797b18003f66047d40ebd1c94e431f8 100644 (file)
@@ -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
 }