//go:build wasip2

package syscall

import (
	"internal/wasi/cli/v0.2.0/environment"
)

var libc_envs map[string]string

func populateEnvironment() {
	libc_envs = make(map[string]string)
	for _, kv := range environment.GetEnvironment().Slice() {
		libc_envs[kv[0]] = kv[1]
	}
}

func Environ() []string {
	var env []string
	for k, v := range libc_envs {
		env = append(env, k+"="+v)
	}
	return env
}

func Getenv(key string) (value string, found bool) {
	value, found = libc_envs[key]
	return
}

func Setenv(key, val string) (err error) {
	if len(key) == 0 {
		return EINVAL
	}
	for i := 0; i < len(key); i++ {
		if key[i] == '=' || key[i] == 0 {
			return EINVAL
		}
	}
	for i := 0; i < len(val); i++ {
		if val[i] == 0 {
			return EINVAL
		}
	}
	libc_envs[key] = val
	runtimeSetenv(key, val)
	return nil
}

func Unsetenv(key string) (err error) {
	delete(libc_envs, key)
	runtimeUnsetenv(key)
	return nil
}

func Clearenv() {
	clear(libc_envs)
}
