/^command_table / { cmdtbl = $2; printf "/* %s.c - automatically generated from %s.ct */\n", \ rootname, rootname > outfile print "#include " > outfile print "" >outfile } /^BOR$/ { cmdnum++ options = 0 cmdtab = "" printf "static char const * const ssu%05d[] = {\n", cmdnum > outfile } /^sub/ { subr = substr($0, 6, length($0)-5) } /^hlp/ { help = substr($0, 6, length($0)-5) } /^cmd/ { cmd = substr($0, 6, length($0)-5) printf "%s\"%s\",\n", cmdtab, cmd > outfile cmdtab = " " } /^opt/ { opt = substr($0, 6, length($0)-5) if (opt == "dont_list") { options += 1 } if (opt == "dont_summarize") { options += 2 } } /^EOR/ { print " (char const *)0" > outfile print "};" > outfile printf "extern void %s __SS_PROTO;\n", subr > outfile # Work around a bug in gawk 3.0.5 awk_bug = cmdnum subr_tab[awk_bug] = subr options_tab[awk_bug] = options help_tab[awk_bug] = help } /^[0-9]/ { linenum = $1; } /^ERROR/ { error = substr($0, 8, length($0)-7) printf "Error in line %d: %s\n", linenum, error print "#__ERROR_IN_FILE__" > outfile } END { printf "static ss_request_entry ssu%05d[] = {\n", cmdnum+1 > outfile for (i=1; i <= cmdnum; i++) { printf " { ssu%05d,\n", i > outfile printf " %s,\n", subr_tab[i] > outfile printf " \"%s\",\n", help_tab[i] > outfile printf " %d },\n", options_tab[i] > outfile } print " { 0, 0, 0, 0 }" > outfile print "};" > outfile print "" > outfile printf "ss_request_table %s = { 2, ssu%05d };\n", \ cmdtbl, cmdnum+1 > outfile }