| // 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. | |
| #include "runtime.h" | |
| #include "os_GOOS.h" | |
| byte* | |
| runtime·getenv(int8 *s) | |
| { | |
| int32 fd, len, n, r; | |
| byte file[128]; | |
| byte *p; | |
| len = runtime·findnull((byte*)s); | |
| if(len > sizeof file-6) | |
| return nil; | |
| runtime·memclr(file, sizeof file); | |
| runtime·memmove((void*)file, (void*)"/env/", 5); | |
| runtime·memmove((void*)(file+5), (void*)s, len); | |
| fd = runtime·open(file, OREAD); | |
| if(fd < 0) | |
| return nil; | |
| n = runtime·seek(fd, 0, 2); | |
| p = runtime·malloc(n+1); | |
| r = runtime·pread(fd, p, n, 0); | |
| runtime·close(fd); | |
| if(r < 0) | |
| return nil; | |
| return p; | |
| } |