in auparse/mk_audit_exit_codes.go [145:214]
func run() error {
tmp, err := os.MkdirTemp("", "mk_audit_exit_codes")
if err != nil {
return err
}
defer os.RemoveAll(tmp)
if err := os.Chdir(tmp); err != nil {
return err
}
errnos, err := readErrorNumbers()
if err != nil {
return err
}
// Filter duplicates and sort by name.
var numToName []ErrorNumber
for _, errno := range errnos {
if errno.Value >= 0 {
numToName = append(numToName, errno)
}
}
// Create output file.
f, err := os.Create("defs.go")
if err != nil {
return err
}
defer f.Close()
// Evaluate template.
r := TemplateParams{
Command: filepath.Base(os.Args[0]),
NameToNum: errnos,
NumToName: numToName,
}
if err := tmpl.Execute(f, r); err != nil {
return err
}
output, err := exec.Command("go", "tool", "cgo", "-godefs", "defs.go").Output()
if err != nil {
return err
}
buf := new(bytes.Buffer)
if err = headerTmpl.Execute(buf, r); err != nil {
return nil
}
s := bufio.NewScanner(bytes.NewReader(output))
for s.Scan() {
if !bytes.HasPrefix(s.Bytes(), []byte("//")) {
buf.Write(s.Bytes())
buf.WriteByte('\n')
}
}
if err = os.WriteFile(flagOut, buf.Bytes(), 0o644); err != nil {
return err
}
_, err = exec.Command("gofmt", "-w", "-s", flagOut).Output()
if err != nil {
return err
}
return nil
}