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] "! */"
8 sect = psect = defines = accessors = prior_ptype =
""
9 values =
"\nstatic const all_vars Defaults = {\n { /* Globals: */\n"
10 params =
"\nstatic struct parm_struct parm_table[] = {"
11 exp_line =
"\n/********** EXP **********/\n"
12 tdstruct =
"typedef struct {"
20 print "The Globals section must come first!"
25 exps = exp_values = exp_line
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 = exp_line
40 psect =
", P_LOCAL, &Vars.l."
44 /^
(STRING
|PATH
|INTEGER
|ENUM
|BOOL
)/ {
50 if (ptype
!= prior_ptype
) {
51 defines = defines
"\n/********** " ptype
" **********/\n"
52 values = values
"\n/********** " ptype
" **********/\n"
54 accessors = accessors
"\n"
58 if (ptype ==
"STRING" || ptype ==
"PATH") {
61 } else if (ptype ==
"BOOL") {
62 atype = vtype =
"BOOL"
68 # We have 2 variables that don't match their conf string. Oh well...
69 if (name ==
"bind_address")
71 else if (name ==
"rsync_port")
75 gsub(/_
/, " ", spname
)
84 defines = defines
"\t" vtype
" " name
";\n"
85 values = values
"\t" $
0 ", /* " name
" */\n"
86 params = params
" {\"" spname
"\", 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 params = params
"\n {NULL, P_BOOL, P_NONE, NULL, NULL, 0}\n};\n"
109 print heading
"\n\n" defines values params accessors
> "daemon-parm.h"
111 print "Failed to parse the data in " ARGV[1]