src/server/pkg/exec/exec.go
func dedupEnvCase(caseInsensitive bool, env []string) []string {
	out := make([]string, 0, len(env))
	saw := map[string]int{} // key => index into out
	for _, kv := range env {
		eq := strings.Index(kv, "=")
		if eq < 0 {
			out = append(out, kv)
			continue
		}
		k := kv[:eq]
		if caseInsensitive {
			k = strings.ToLower(k)
		}
		if dupIdx, isDup := saw[k]; isDup {
			out[dupIdx] = kv
			continue
		}
		saw[k] = len(out)
		out = append(out, kv)
	}
	return out
}
func dedupEnvCase(caseInsensitive bool, env []string) []string {
	out := make([]string, 0, len(env))
	saw := map[string]int{} // key => index into out
	for _, kv := range env {
		eq := strings.Index(kv, "=")
		if eq < 0 {
			out = append(out, kv)
			continue
		}
		k := kv[:eq]
		if caseInsensitive {
			k = strings.ToLower(k)
		}
		if dupIdx, isDup := saw[k]; isDup {
			out[dupIdx] = kv
			continue
		}
		saw[k] = len(out)
		out = append(out, kv)
	}
	return out
}
func dedupEnvCase ( caseInsensitive bool , env [ ] string ) [ ] string { out := make ( [ ] string , 0 , len ( env ) ) saw := map [ string ] int { } // key => index into out for _ , kv := range env { eq := strings . Index ( kv , " " ) if eq < 0 { out = append ( out , kv ) continue } k := kv [ : eq ] if caseInsensitive { k = strings . ToLower ( k ) } if dupIdx , isDup := saw [ k ] ; isDup { out [ dupIdx ] = kv continue } saw [ k ] = len ( out ) out = append ( out , kv ) } return out }
// dedupEnvCase is dedupEnv with a case option for testing.
// If caseInsensitive is true, the case of keys is ignored.
dedupEnvCase is dedupEnv with a case option for testing . If caseInsensitive is true the case of keys is ignored .