...

Source file src/runtime/env_plan9.go

     1	// Copyright 2012 The Go Authors. All rights reserved.
     2	// Use of this source code is governed by a BSD-style
     3	// license that can be found in the LICENSE file.
     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   // pointer to C function
    50	var _cgo_unsetenv unsafe.Pointer // pointer to C function
    51	

View as plain text