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