BEGIN {
  print "#include <errno.h>";
  print "#include <mach/error.h>";
  print "#include <errorlib.h>";
  print "#define static static const";
  nsubs = split(subsys, subs);
  while (nsubs > 0) printf "#include \"%s\"\n", subs[nsubs--];
  print "\n\n\
const struct error_system __mach_error_systems[err_max_system + 1] =";
  print "  {";
}
/^static.*err_[a-z0-9A-Z_]+_sub *\[/ {
  s = $0; sub(/^.*err_/, "", s); sub(/_sub.*$/, "", s);
  printf "    [err_get_system (err_%s)] = { errlib_count (err_%s_sub),",
	s, s;
  printf "\"(system %s) error with unknown subsystem\", err_%s_sub },\n",
	s, s;
}
END {
  print "  };";
  print "\n\
const int __mach_error_system_count = errlib_count (__mach_error_systems);";
}