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