You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.5 KiB
76 lines
1.5 KiB
4 months ago
|
/^command_table / {
|
||
|
cmdtbl = $2;
|
||
|
printf "/* %s.c - automatically generated from %s.ct */\n", \
|
||
|
rootname, rootname > outfile
|
||
|
print "#include <ss/ss.h>" > 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
|
||
|
}
|
||
|
|