Francisco J Ballesteroszxfs put fix1449f3310 years agoHistory
63 lines · 910 B · Go
RawDownload
package cmd import (	"os"	"strings"	"sync") struct envSet {	vars map[string]string	sync.Mutex} // Initialize a new env from the osfunc osenv() map[string]string {	env := map[string]string{}	for _, s := range os.Environ() {		toks := strings.SplitN(s, "=", 2)		if len(toks) == 2 {			env[toks[0]] = toks[1]		}	}	return env} func (e *envSet) set(n, v string) {	e.Lock()	defer e.Unlock()	if v == "" {		delete(e.vars, n)	} else {		e.vars[n] = v	}	os.Setenv(n, v) // in case someone execs...} func (e *envSet) get(n string) string {	e.Lock()	defer e.Unlock()	return e.vars[n]} func mkEnv() *envSet {	ne := &envSet{		vars: map[string]string{},	}	for k, v := range osenv() {		ne.vars[k] = v	}	return ne} func (e *envSet) dup() *envSet {	e.Lock()	defer e.Unlock()	ne := &envSet{		vars: map[string]string{},	}	for k, v := range e.vars {		ne.vars[k] = v	}	return ne}