3 # The caller must pass arg: daemon-parm.txt
4 # The resulting code is output into daemon-parm.h
7 heading =
"/* DO NOT EDIT THIS FILE! It is auto-generated from a list of values in " ARGV[1] "! */\n\n"
8 sect = psect = defines = accessors = prior_ptype =
""
9 parms =
"\nstatic struct parm_struct parm_table[] = {"
10 comment_fmt =
"\n/********** %s **********/\n"
11 tdstruct =
"typedef struct {"
19 print "The Globals section must come first!"
24 values =
"\nstatic const all_vars Defaults = {\n { /* Globals: */\n"
25 exps = exp_values =
sprintf(comment_fmt
, "EXP")
27 psect =
", P_GLOBAL, &Vars.g."
33 print "The Locals section must come after the Globals!"
36 defines = defines exps
"} global_vars;\n\n" tdstruct
37 values = values exp_values
"\n }, { /* Locals: */\n"
38 exps = exp_values =
sprintf(comment_fmt
, "EXP")
40 psect =
", P_LOCAL, &Vars.l."
44 /^
(STRING
|CHAR
|PATH
|INTEGER
|ENUM
|OCTAL
|BOOL
|BOOLREV
|BOOL3
)[ \t]/ {
50 if (ptype
!= prior_ptype
) {
51 comment =
sprintf(comment_fmt
, ptype
)
52 defines = defines comment
53 values = values comment
55 accessors = accessors
"\n"
59 if (ptype ==
"STRING" || ptype ==
"PATH") {
62 } else if (ptype ~
/BOOL
/) {
63 atype = vtype =
"BOOL"
64 } else if (ptype ==
"CHAR") {
72 # The name might be var_name|public_name
75 sub(/.
*\
|/, "", pubname
)
76 gsub(/_
/, " ", pubname
)
84 defines = defines
"\t" vtype
" " name
";\n"
85 values = values
"\t" $
0 ", /* " name
" */\n"
86 parms = parms
" {\"" pubname
"\", P_" ptype psect name
", " enum
", 0},\n"
87 accessors = accessors
"FN_" sect
"_" atype
"(lp_" name
", " name
")\n"
89 if (vtype ==
"char*") {
90 exps = exps
"\tBOOL " name
"_EXP;\n"
91 exp_values = exp_values
"\tFalse, /* " name
"_EXP */\n"
98 print "Extraneous line:" $
0
104 if (sect
!= "" && defines
!= "") {
105 defines = defines exps
"} local_vars;\n\n"
106 defines = defines tdstruct
"\n\tglobal_vars g;\n\tlocal_vars l;\n} all_vars;\n"
107 values = values exp_values
"\n }\n};\n\nstatic all_vars Vars;\n"
108 parms = parms
"\n {NULL, P_BOOL, P_NONE, NULL, NULL, 0}\n};\n"
109 print heading defines values parms accessors
> "daemon-parm.h"
111 print "Failed to parse the data in " ARGV[1]