vendor/golang.org/x/sys/windows/env_windows.go
changeset 265 05c40b36d3b2
equal deleted inserted replaced
264:8f478162d991 265:05c40b36d3b2
       
     1 // Copyright 2010 The Go Authors. All rights reserved.
       
     2 // Use of this source code is governed by a BSD-style
       
     3 // license that can be found in the LICENSE file.
       
     4 
       
     5 // Windows environment variables.
       
     6 
       
     7 package windows
       
     8 
       
     9 import (
       
    10 	"syscall"
       
    11 	"unsafe"
       
    12 )
       
    13 
       
    14 func Getenv(key string) (value string, found bool) {
       
    15 	return syscall.Getenv(key)
       
    16 }
       
    17 
       
    18 func Setenv(key, value string) error {
       
    19 	return syscall.Setenv(key, value)
       
    20 }
       
    21 
       
    22 func Clearenv() {
       
    23 	syscall.Clearenv()
       
    24 }
       
    25 
       
    26 func Environ() []string {
       
    27 	return syscall.Environ()
       
    28 }
       
    29 
       
    30 // Returns a default environment associated with the token, rather than the current
       
    31 // process. If inheritExisting is true, then this environment also inherits the
       
    32 // environment of the current process.
       
    33 func (token Token) Environ(inheritExisting bool) (env []string, err error) {
       
    34 	var block *uint16
       
    35 	err = CreateEnvironmentBlock(&block, token, inheritExisting)
       
    36 	if err != nil {
       
    37 		return nil, err
       
    38 	}
       
    39 	defer DestroyEnvironmentBlock(block)
       
    40 	blockp := uintptr(unsafe.Pointer(block))
       
    41 	for {
       
    42 		entry := UTF16PtrToString((*uint16)(unsafe.Pointer(blockp)))
       
    43 		if len(entry) == 0 {
       
    44 			break
       
    45 		}
       
    46 		env = append(env, entry)
       
    47 		blockp += 2 * (uintptr(len(entry)) + 1)
       
    48 	}
       
    49 	return env, nil
       
    50 }
       
    51 
       
    52 func Unsetenv(key string) error {
       
    53 	return syscall.Unsetenv(key)
       
    54 }