1# Edited version of Src/signames2.awk. 2# 3# {g,n}awk script to generate errnames.c 4# This version relies on the previous output of the preprocessor 5# on sigtmp.c, sigtmp.out, which is in turn generated by errnames1.awk. 6# 7# NB: On SunOS 4.1.3 - user-functions don\'t work properly, also \" problems 8# Without 0 + hacks some nawks compare numbers as strings 9# 10/^XXNAMES XXE[A-Z0-9]*[\t ][\t ]*[1-9][0-9]*/ { 11 eindex = index($0, "E") 12 etail = substr($0, 11, 80) 13 split(etail, tmp) 14 enam = tmp[1] 15 enum = tmp[2] 16 if (errname[enum] == "") { 17 errname[enum] = enam 18 if (0 + max < 0 + enum && enum < 1024) 19 max = enum 20 } 21} 22 23END { 24 ps = "%s" 25 printf "/** errnames.c **/\n" 26 printf "/** architecture-customized errnames.c for zsh **/\n" 27 printf "\n" 28 printf "#define ERRCOUNT\t%d\n", max 29 printf "\n" 30 printf "#include %csystem.mdh%c\n", 34, 34 31 printf "\n" 32 printf "/**/\n" 33 printf "const char *sys_errnames[ERRCOUNT+1] = {\n" 34 35 for (i = 1; i <= 0 + max; i++) 36 if (errname[i] == "") 37 printf("\t%cE%d%c,\n", 34, i, 34) 38 else 39 printf("\t%c%s%c,\n", 34, errname[i], 34) 40 print "\tNULL" 41 print "};" 42} 43