xref: /aosp_15_r20/external/e2fsprogs/lib/ss/ct_c.awk (revision 6a54128f25917bfc36a8a6e9d722c04a0b4641b6)
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