diff options
Diffstat (limited to 'src/pkg/runtime/env_plan9.c')
-rw-r--r-- | src/pkg/runtime/env_plan9.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/pkg/runtime/env_plan9.c b/src/pkg/runtime/env_plan9.c new file mode 100644 index 000000000..848d73303 --- /dev/null +++ b/src/pkg/runtime/env_plan9.c @@ -0,0 +1,33 @@ +// 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; +} |