123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // Copyright 2010 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.
- // Windows environment variables.
- package windows
- import (
- "syscall"
- "unsafe"
- )
- func Getenv(key string) (value string, found bool) {
- return syscall.Getenv(key)
- }
- func Setenv(key, value string) error {
- return syscall.Setenv(key, value)
- }
- func Clearenv() {
- syscall.Clearenv()
- }
- func Environ() []string {
- return syscall.Environ()
- }
- // Returns a default environment associated with the token, rather than the current
- // process. If inheritExisting is true, then this environment also inherits the
- // environment of the current process.
- func (token Token) Environ(inheritExisting bool) (env []string, err error) {
- var block *uint16
- err = CreateEnvironmentBlock(&block, token, inheritExisting)
- if err != nil {
- return nil, err
- }
- defer DestroyEnvironmentBlock(block)
- blockp := uintptr(unsafe.Pointer(block))
- for {
- entry := UTF16PtrToString((*uint16)(unsafe.Pointer(blockp)))
- if len(entry) == 0 {
- break
- }
- env = append(env, entry)
- blockp += 2 * (uintptr(len(entry)) + 1)
- }
- return env, nil
- }
- func Unsetenv(key string) error {
- return syscall.Unsetenv(key)
- }
|