13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/^command_table / { 23839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o cmdtbl = $2; 33839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf "/* %s.c - automatically generated from %s.ct */\n", \ 43839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o rootname, rootname > outfile 53839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o print "#include <ss/ss.h>" > outfile 63839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o print "" >outfile 73839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 83839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 93839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/^BOR$/ { 103839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o cmdnum++ 113839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o options = 0 123839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o cmdtab = "" 133839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf "static char const * const ssu%05d[] = {\n", cmdnum > outfile 143839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 153839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 163839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/^sub/ { 173839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o subr = substr($0, 6, length($0)-5) 183839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 193839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 203839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/^hlp/ { 213839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o help = substr($0, 6, length($0)-5) 223839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 233839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 243839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/^cmd/ { 253839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o cmd = substr($0, 6, length($0)-5) 263839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf "%s\"%s\",\n", cmdtab, cmd > outfile 273839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o cmdtab = " " 283839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 293839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 303839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/^opt/ { 313839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o opt = substr($0, 6, length($0)-5) 323839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o if (opt == "dont_list") { 333839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o options += 1 343839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o } 353839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o if (opt == "dont_summarize") { 363839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o options += 2 373839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o } 383839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 393839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 403839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/^EOR/ { 413839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o print " (char const *)0" > outfile 423839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o print "};" > outfile 433839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf "extern void %s __SS_PROTO;\n", subr > outfile 441f00aafd9f5a1c69d72233c5b7859a38a6c702e5Theodore Ts'o # Work around a bug in gawk 3.0.5 451f00aafd9f5a1c69d72233c5b7859a38a6c702e5Theodore Ts'o awk_bug = cmdnum 461f00aafd9f5a1c69d72233c5b7859a38a6c702e5Theodore Ts'o subr_tab[awk_bug] = subr 471f00aafd9f5a1c69d72233c5b7859a38a6c702e5Theodore Ts'o options_tab[awk_bug] = options 481f00aafd9f5a1c69d72233c5b7859a38a6c702e5Theodore Ts'o help_tab[awk_bug] = help 493839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 503839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 513839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/^[0-9]/ { 523839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o linenum = $1; 533839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 543839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 553839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/^ERROR/ { 563839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o error = substr($0, 8, length($0)-7) 573839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf "Error in line %d: %s\n", linenum, error 583839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o print "#__ERROR_IN_FILE__" > outfile 593839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 603839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 613839e65723771b85975f4263102dd3ceec4523cTheodore Ts'oEND { 623839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf "static ss_request_entry ssu%05d[] = {\n", cmdnum+1 > outfile 633839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o for (i=1; i <= cmdnum; i++) { 643839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf " { ssu%05d,\n", i > outfile 653839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf " %s,\n", subr_tab[i] > outfile 663839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf " \"%s\",\n", help_tab[i] > outfile 673839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf " %d },\n", options_tab[i] > outfile 683839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o } 693839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o print " { 0, 0, 0, 0 }" > outfile 703839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o print "};" > outfile 713839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o print "" > outfile 723839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o printf "ss_request_table %s = { 2, ssu%05d };\n", \ 733839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o cmdtbl, cmdnum+1 > outfile 743839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 753839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 76