// 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 dragonfly freebsd linux nacl netbsd openbsd solaris windows

#include "runtime.h"
#include "array.h"
#include "arch.h"

extern Slice runtime_get_envs(void);

String
runtime_getenv(const char *s)
{
	int32 i, j;
	intgo len;
	const byte *v, *bs;
	Slice envs;
	String* envv;
	int32 envc;
	String ret;

	bs = (const byte*)s;
	len = runtime_findnull(bs);
	envs = runtime_get_envs();
	envv = (String*)envs.__values;
	envc = 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;
		ret.str = v+len+1;
		ret.len = envv[i].len-len-1;
		return ret;
	nomatch:;
	}
	ret.str = nil;
	ret.len = 0;
	return ret;
}
