mirror of
https://github.com/golang/go
synced 2024-10-04 22:31:22 -06:00
66e346433e
R=golang-dev, r CC=golang-dev https://golang.org/cl/7593045
34 lines
723 B
C
34 lines
723 B
C
// 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((int8*)file, OREAD, 0);
|
|
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;
|
|
}
|