in providers/darwin/process_darwin.go [194:234]
func parseKernProcargs2(data []byte, p *process) error {
// argc
if len(data) < 4 {
return errInvalidProcargs2Data
}
argc := binary.LittleEndian.Uint32(data)
data = data[4:]
// exe
lines := strings.Split(string(data), "\x00")
p.exe = lines[0]
lines = lines[1:]
// Skip nulls that may be appended after the exe.
for len(lines) > 0 {
if lines[0] != "" {
break
}
lines = lines[1:]
}
// argv
if c := min(argc, uint32(len(lines))); c > 0 {
p.args = lines[:c]
lines = lines[c:]
}
// env vars
env := make(map[string]string, len(lines))
for _, l := range lines {
if len(l) == 0 {
break
}
key, val, _ := strings.Cut(l, "=")
env[key] = val
}
p.env = env
return nil
}