diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-12-22 01:15:33 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-12-22 01:15:33 +0000 |
commit | 409a5e7eb4cca107037fafa4a7eea92603edb83d (patch) | |
tree | 06f36bbef6fae78278f799194ad0df8ba2dabaa1 /libgo/runtime/env_posix.c | |
parent | 7e9268b4cf01ab87d9b602f592ed2e2facfadda9 (diff) | |
download | gcc-409a5e7eb4cca107037fafa4a7eea92603edb83d.tar.gz |
libgo: Update to revision 15193:6fdc1974457c of master library.
From-SVN: r194692
Diffstat (limited to 'libgo/runtime/env_posix.c')
-rw-r--r-- | libgo/runtime/env_posix.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/libgo/runtime/env_posix.c b/libgo/runtime/env_posix.c new file mode 100644 index 00000000000..31f41793530 --- /dev/null +++ b/libgo/runtime/env_posix.c @@ -0,0 +1,37 @@ +// 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. + +// +build darwin freebsd linux netbsd openbsd windows + +#include "runtime.h" +#include "array.h" + +extern Slice syscall_Envs asm ("syscall.Envs"); + +const byte* +runtime_getenv(const char *s) +{ + int32 i, j, len; + const byte *v, *bs; + String* envv; + int32 envc; + + bs = (const byte*)s; + len = runtime_findnull(bs); + envv = (String*)syscall_Envs.__values; + envc = syscall_Envs.__count; + for(i=0; i<envc; i++){ + if(envv[i].len <= len) + continue; + v = (const byte*)envv[i].str; + for(j=0; j<len; j++) + if(bs[j] != v[j]) + goto nomatch; + if(v[len] != '=') + goto nomatch; + return v+len+1; + nomatch:; + } + return nil; +} |