...
Source file src/runtime/env_plan9.go
1
2
3
4
5 package runtime
6
7 import "unsafe"
8
9 var tracebackbuf [128]byte
10
11 func gogetenv(key string) string {
12 var file [128]byte
13 if len(key) > len(file)-6 {
14 return ""
15 }
16
17 copy(file[:], "/env/")
18 copy(file[5:], key)
19
20 fd := open(&file[0], _OREAD, 0)
21 if fd < 0 {
22 return ""
23 }
24 n := seek(fd, 0, 2)
25 if n <= 0 {
26 closefd(fd)
27 return ""
28 }
29
30 p := make([]byte, n)
31
32 r := pread(fd, unsafe.Pointer(&p[0]), int32(n), 0)
33 closefd(fd)
34 if r < 0 {
35 return ""
36 }
37
38 if p[r-1] == 0 {
39 r--
40 }
41
42 var s string
43 sp := stringStructOf(&s)
44 sp.str = unsafe.Pointer(&p[0])
45 sp.len = int(r)
46 return s
47 }
48
49 var _cgo_setenv unsafe.Pointer
50 var _cgo_unsetenv unsafe.Pointer
51
View as plain text