# The resulting code is output into daemon-parm.h
BEGIN {
- heading = "/* DO NOT EDIT THIS FILE! It is auto-generated from a list of values in " ARGV[1] "! */"
+ heading = "/* DO NOT EDIT THIS FILE! It is auto-generated from a list of values in " ARGV[1] "! */\n\n"
sect = psect = defines = accessors = prior_ptype = ""
- values = "\nstatic const all_vars Defaults = {\n { /* Globals: */\n"
- params = "\nstatic struct parm_struct parm_table[] = {"
- exp_line = "\n/********** EXP **********/\n"
+ parms = "\nstatic struct parm_struct parm_table[] = {"
+ comment_fmt = "\n/********** %s **********/\n"
tdstruct = "typedef struct {"
}
exit
}
defines = tdstruct
- exps = exp_values = exp_line
+ values = "\nstatic const all_vars Defaults = {\n { /* Globals: */\n"
+ exps = exp_values = sprintf(comment_fmt, "EXP")
sect = "GLOBAL"
psect = ", P_GLOBAL, &Vars.g."
next
}
defines = defines exps "} global_vars;\n\n" tdstruct
values = values exp_values "\n }, { /* Locals: */\n"
- exps = exp_values = exp_line
+ exps = exp_values = sprintf(comment_fmt, "EXP")
sect = "LOCAL"
psect = ", P_LOCAL, &Vars.l."
next
}
-/^(STRING|PATH|INTEGER|ENUM|BOOL)/ {
+/^(STRING|CHAR|PATH|INTEGER|ENUM|OCTAL|BOOL|BOOLREV|BOOL3)[ \t]/ {
ptype = $1
name = $2
$1 = $2 = ""
sub(/^[ \t]+/, "")
if (ptype != prior_ptype) {
- defines = defines "\n/********** " ptype " **********/\n"
- values = values "\n/********** " ptype " **********/\n"
- params = params "\n"
+ comment = sprintf(comment_fmt, ptype)
+ defines = defines comment
+ values = values comment
+ parms = parms "\n"
accessors = accessors "\n"
prior_ptype = ptype
}
if (ptype == "STRING" || ptype == "PATH") {
atype = "STRING"
vtype = "char*"
- } else if (ptype == "BOOL") {
+ } else if (ptype ~ /BOOL/) {
atype = vtype = "BOOL"
+ } else if (ptype == "CHAR") {
+ atype = "CHAR"
+ vtype = "char"
} else {
atype = "INTEGER"
vtype = "int"
}
- # We have 2 variables that don't match their conf string. Oh well...
- if (name == "bind_address")
- spname = "address"
- else if (name == "rsync_port")
- spname = "port"
- else {
- spname = name
- gsub(/_/, " ", spname)
- gsub(/-/, "", name)
- }
+ # The name might be var_name|public_name
+ pubname = name
+ sub(/\|.*/, "", name)
+ sub(/.*\|/, "", pubname)
+ gsub(/_/, " ", pubname)
+ gsub(/-/, "", name)
if (ptype == "ENUM")
enum = "enum_" name
defines = defines "\t" vtype " " name ";\n"
values = values "\t" $0 ", /* " name " */\n"
- params = params " {\"" spname "\", P_" ptype psect name ", " enum ", 0},\n"
+ parms = parms " {\"" pubname "\", P_" ptype psect name ", " enum ", 0},\n"
accessors = accessors "FN_" sect "_" atype "(lp_" name ", " name ")\n"
if (vtype == "char*") {
defines = defines exps "} local_vars;\n\n"
defines = defines tdstruct "\n\tglobal_vars g;\n\tlocal_vars l;\n} all_vars;\n"
values = values exp_values "\n }\n};\n\nstatic all_vars Vars;\n"
- params = params "\n {NULL, P_BOOL, P_NONE, NULL, NULL, 0}\n};\n"
- print heading "\n\n" defines values params accessors > "daemon-parm.h"
+ parms = parms "\n {NULL, P_BOOL, P_NONE, NULL, NULL, 0}\n};\n"
+ print heading defines values parms accessors > "daemon-parm.h"
} else {
print "Failed to parse the data in " ARGV[1]
exit 1