| // Copyright 2012 The Go Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | package runtime | 
 |  | 
 | import "unsafe" | 
 |  | 
 | var tracebackbuf [128]byte | 
 |  | 
 | func gogetenv(key string) string { | 
 | 	var file [128]byte | 
 | 	if len(key) > len(file)-6 { | 
 | 		return "" | 
 | 	} | 
 |  | 
 | 	copy(file[:], "/env/") | 
 | 	copy(file[5:], key) | 
 |  | 
 | 	fd := open(&file[0], _OREAD, 0) | 
 | 	if fd < 0 { | 
 | 		return "" | 
 | 	} | 
 | 	n := seek(fd, 0, 2) | 
 | 	if n <= 0 { | 
 | 		closefd(fd) | 
 | 		return "" | 
 | 	} | 
 |  | 
 | 	p := make([]byte, n) | 
 |  | 
 | 	r := pread(fd, unsafe.Pointer(&p[0]), int32(n), 0) | 
 | 	closefd(fd) | 
 | 	if r < 0 { | 
 | 		return "" | 
 | 	} | 
 |  | 
 | 	if p[r-1] == 0 { | 
 | 		r-- | 
 | 	} | 
 |  | 
 | 	var s string | 
 | 	sp := stringStructOf(&s) | 
 | 	sp.str = unsafe.Pointer(&p[0]) | 
 | 	sp.len = int(r) | 
 | 	return s | 
 | } | 
 |  | 
 | var _cgo_setenv unsafe.Pointer   // pointer to C function | 
 | var _cgo_unsetenv unsafe.Pointer // pointer to C function |