1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
// Copyright 2021 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.
// Package godebug makes the simplified settings in the $GODEBUG environment variable
// available to packages.
// Needed since internal/godebug is not available here.
package godebug
import "os"
func Get(key string) string {
s := os.Getenv("GODEBUG")
if s == "" {
return ""
}
// Scan the string backward so that later settings are used
// and earlier settings are ignored.
// Note that a forward scan would cause cached values
// to temporarily use the ignored value before being
// updated to the "correct" one.
end := len(s)
eq := -1
for i := end - 1; i >= -1; i-- {
if i == -1 || s[i] == ',' {
if eq >= 0 {
name, arg := s[i+1:eq], s[eq+1:end]
if name == key {
for j := 0; j < len(arg); j++ {
if arg[j] == '#' {
return arg[:j]
}
}
return arg
}
}
eq = -1
end = i
} else if s[i] == '=' {
eq = i
}
}
return ""
}
|