in internal/oraclediscovery/oraclediscovery.go [172:201]
func (d DiscoveryService) extractOracleEnvVars(environFilePath string, varsToExtract ...string) (map[string]string, error) {
data, err := d.readFile(environFilePath)
if err != nil {
return nil, fmt.Errorf("reading environment variables from %q file: %w", environFilePath, err)
}
// The entries in /proc/[pid]/environ file are separated by the null character
envVars := strings.Split(string(data), "\x00")
results := make(map[string]string)
varsSet := make(map[string]bool)
for _, v := range varsToExtract {
varsSet[v] = true
}
for _, envVar := range envVars {
if envVar == "" {
continue
}
split := strings.SplitN(envVar, "=", 2)
if len(split) != 2 {
return nil, fmt.Errorf("failed to split environment variable %q into key and value", envVar)
}
varName, varValue := split[0], split[1]
if _, ok := varsSet[varName]; ok {
results[varName] = varValue
}
}
return results, nil
}