// 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 aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris windows plan9package runtimeimportfunc ( string) string { := environ()if == nil {throw("getenv before env init") }for , := range {iflen() > len() && [len()] == '=' && envKeyEqual([:len()], ) {return [len()+1:] } }return""}// envKeyEqual reports whether a == b, with ASCII-only case insensitivity// on Windows. The two strings must have the same length.func (, string) bool {ifGOOS == "windows" { // case insensitivefor := 0; < len(); ++ { , := [], []if == || lowerASCII() == lowerASCII() {continue }returnfalse }returntrue }return == }func ( byte) byte {if'A' <= && <= 'Z' {return + ('a' - 'A') }return}var_cgo_setenvunsafe.Pointer// pointer to C functionvar_cgo_unsetenvunsafe.Pointer// pointer to C function// Update the C environment if cgo is loaded.// Called from syscall.Setenv.//go:linkname syscall_setenv_c syscall.setenv_cfunc ( string, string) {if_cgo_setenv == nil {return } := [2]unsafe.Pointer{cstring(), cstring()}asmcgocall(_cgo_setenv, unsafe.Pointer(&))}// Update the C environment if cgo is loaded.// Called from syscall.unsetenv.//go:linkname syscall_unsetenv_c syscall.unsetenv_cfunc ( string) {if_cgo_unsetenv == nil {return } := [1]unsafe.Pointer{cstring()}asmcgocall(_cgo_unsetenv, unsafe.Pointer(&))}func ( string) unsafe.Pointer { := make([]byte, len()+1)copy(, )returnunsafe.Pointer(&[0])}