1*6a54128fSAndroid Build Coastguard Worker/^command_table / { 2*6a54128fSAndroid Build Coastguard Worker cmdtbl = $2; 3*6a54128fSAndroid Build Coastguard Worker printf "/* %s.c - automatically generated from %s.ct */\n", \ 4*6a54128fSAndroid Build Coastguard Worker rootname, rootname > outfile 5*6a54128fSAndroid Build Coastguard Worker print "#include <ss/ss.h>" > outfile 6*6a54128fSAndroid Build Coastguard Worker print "" >outfile 7*6a54128fSAndroid Build Coastguard Worker} 8*6a54128fSAndroid Build Coastguard Worker 9*6a54128fSAndroid Build Coastguard Worker/^BOR$/ { 10*6a54128fSAndroid Build Coastguard Worker cmdnum++ 11*6a54128fSAndroid Build Coastguard Worker options = 0 12*6a54128fSAndroid Build Coastguard Worker cmdtab = "" 13*6a54128fSAndroid Build Coastguard Worker printf "static char const * const ssu%05d[] = {\n", cmdnum > outfile 14*6a54128fSAndroid Build Coastguard Worker} 15*6a54128fSAndroid Build Coastguard Worker 16*6a54128fSAndroid Build Coastguard Worker/^sub/ { 17*6a54128fSAndroid Build Coastguard Worker subr = substr($0, 6, length($0)-5) 18*6a54128fSAndroid Build Coastguard Worker} 19*6a54128fSAndroid Build Coastguard Worker 20*6a54128fSAndroid Build Coastguard Worker/^hlp/ { 21*6a54128fSAndroid Build Coastguard Worker help = substr($0, 6, length($0)-5) 22*6a54128fSAndroid Build Coastguard Worker} 23*6a54128fSAndroid Build Coastguard Worker 24*6a54128fSAndroid Build Coastguard Worker/^cmd/ { 25*6a54128fSAndroid Build Coastguard Worker cmd = substr($0, 6, length($0)-5) 26*6a54128fSAndroid Build Coastguard Worker printf "%s\"%s\",\n", cmdtab, cmd > outfile 27*6a54128fSAndroid Build Coastguard Worker cmdtab = " " 28*6a54128fSAndroid Build Coastguard Worker} 29*6a54128fSAndroid Build Coastguard Worker 30*6a54128fSAndroid Build Coastguard Worker/^opt/ { 31*6a54128fSAndroid Build Coastguard Worker opt = substr($0, 6, length($0)-5) 32*6a54128fSAndroid Build Coastguard Worker if (opt == "dont_list") { 33*6a54128fSAndroid Build Coastguard Worker options += 1 34*6a54128fSAndroid Build Coastguard Worker } 35*6a54128fSAndroid Build Coastguard Worker if (opt == "dont_summarize") { 36*6a54128fSAndroid Build Coastguard Worker options += 2 37*6a54128fSAndroid Build Coastguard Worker } 38*6a54128fSAndroid Build Coastguard Worker} 39*6a54128fSAndroid Build Coastguard Worker 40*6a54128fSAndroid Build Coastguard Worker/^EOR/ { 41*6a54128fSAndroid Build Coastguard Worker print " (char const *)0" > outfile 42*6a54128fSAndroid Build Coastguard Worker print "};" > outfile 43*6a54128fSAndroid Build Coastguard Worker printf "extern void %s __SS_PROTO;\n", subr > outfile 44*6a54128fSAndroid Build Coastguard Worker # Work around a bug in gawk 3.0.5 45*6a54128fSAndroid Build Coastguard Worker awk_bug = cmdnum 46*6a54128fSAndroid Build Coastguard Worker subr_tab[awk_bug] = subr 47*6a54128fSAndroid Build Coastguard Worker options_tab[awk_bug] = options 48*6a54128fSAndroid Build Coastguard Worker help_tab[awk_bug] = help 49*6a54128fSAndroid Build Coastguard Worker} 50*6a54128fSAndroid Build Coastguard Worker 51*6a54128fSAndroid Build Coastguard Worker/^[0-9]/ { 52*6a54128fSAndroid Build Coastguard Worker linenum = $1; 53*6a54128fSAndroid Build Coastguard Worker} 54*6a54128fSAndroid Build Coastguard Worker 55*6a54128fSAndroid Build Coastguard Worker/^ERROR/ { 56*6a54128fSAndroid Build Coastguard Worker error = substr($0, 8, length($0)-7) 57*6a54128fSAndroid Build Coastguard Worker printf "Error in line %d: %s\n", linenum, error 58*6a54128fSAndroid Build Coastguard Worker print "#__ERROR_IN_FILE__" > outfile 59*6a54128fSAndroid Build Coastguard Worker} 60*6a54128fSAndroid Build Coastguard Worker 61*6a54128fSAndroid Build Coastguard WorkerEND { 62*6a54128fSAndroid Build Coastguard Worker printf "static ss_request_entry ssu%05d[] = {\n", cmdnum+1 > outfile 63*6a54128fSAndroid Build Coastguard Worker for (i=1; i <= cmdnum; i++) { 64*6a54128fSAndroid Build Coastguard Worker printf " { ssu%05d,\n", i > outfile 65*6a54128fSAndroid Build Coastguard Worker printf " %s,\n", subr_tab[i] > outfile 66*6a54128fSAndroid Build Coastguard Worker printf " \"%s\",\n", help_tab[i] > outfile 67*6a54128fSAndroid Build Coastguard Worker printf " %d },\n", options_tab[i] > outfile 68*6a54128fSAndroid Build Coastguard Worker } 69*6a54128fSAndroid Build Coastguard Worker print " { 0, 0, 0, 0 }" > outfile 70*6a54128fSAndroid Build Coastguard Worker print "};" > outfile 71*6a54128fSAndroid Build Coastguard Worker print "" > outfile 72*6a54128fSAndroid Build Coastguard Worker printf "ss_request_table %s = { 2, ssu%05d };\n", \ 73*6a54128fSAndroid Build Coastguard Worker cmdtbl, cmdnum+1 > outfile 74*6a54128fSAndroid Build Coastguard Worker} 75*6a54128fSAndroid Build Coastguard Worker 76