github.com/emmansun/gmsm@v0.29.1/internal/godebug/godebug.go (about)

     1  // Copyright 2021 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  // Package godebug parses the GODEBUG environment variable.
     6  package godebug
     7  
     8  import "os"
     9  
    10  // Get returns the value for the provided GODEBUG key.
    11  func Get(key string) string {
    12  	return get(os.Getenv("GODEBUG"), key)
    13  }
    14  
    15  // get returns the value part of key=value in s (a GODEBUG value).
    16  func get(s, key string) string {
    17  	for i := 0; i < len(s)-len(key)-1; i++ {
    18  		if i > 0 && s[i-1] != ',' {
    19  			continue
    20  		}
    21  		afterKey := s[i+len(key):]
    22  		if afterKey[0] != '=' || s[i:i+len(key)] != key {
    23  			continue
    24  		}
    25  		val := afterKey[1:]
    26  		for i, b := range val {
    27  			if b == ',' {
    28  				return val[:i]
    29  			}
    30  		}
    31  		return val
    32  	}
    33  	return ""
    34  }