#!/usr/bin/awk -f

# The caller must pass arg: daemon-parm.txt
# 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] "! */\n\n"
    sect = psect = defines = accessors = prior_ptype = ""
    parms = "\nstatic struct parm_struct parm_table[] = {"
    comment_fmt = "\n/********** %s **********/\n"
    tdstruct = "typedef struct {"
}

/^\s*$/ { next }
/^#/ { next }

/^Globals:/ {
    if (defines != "") {
	print "The Globals section must come first!"
	defines = ""
	exit
    }
    defines = tdstruct
    values = "\nstatic const all_vars Defaults = {\n    { /* Globals: */\n"
    exps = exp_values = sprintf(comment_fmt, "EXP")
    sect = "GLOBAL"
    psect = ", P_GLOBAL, &Vars.g."
    next
}

/^Locals:/ {
    if (sect == "") {
	print "The Locals section must come after the Globals!"
	exit
    }
    defines = defines exps "} global_vars;\n\n" tdstruct
    values = values exp_values "\n    }, { /* Locals: */\n"
    exps = exp_values = sprintf(comment_fmt, "EXP")
    sect = "LOCAL"
    psect = ", P_LOCAL, &Vars.l."
    next
}

/^(STRING|CHAR|PATH|INTEGER|ENUM|OCTAL|BOOL|BOOLREV|BOOL3)[ \t]/ {
    ptype = $1
    name = $2
    $1 = $2 = ""
    sub(/^[ \t]+/, "")

    if (ptype != prior_ptype) {
	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/) {
	atype = vtype = "BOOL"
    } else if (ptype == "CHAR") {
	atype = "CHAR"
	vtype = "char"
    } else {
	atype = "INTEGER"
	vtype = "int"
    }

    # The name might be var_name|public_name
    pubname = name
    sub(/\|.*/, "", name)
    sub(/.*\|/, "", pubname)
    gsub(/_/, " ", pubname)
    gsub(/-/, "", name)

    if (ptype == "ENUM")
	enum = "enum_" name
    else
	enum = "NULL"

    defines = defines "\t" vtype " " name ";\n"
    values = values "\t" $0 ", /* " name " */\n"
    parms = parms " {\"" pubname "\", P_" ptype psect name ", " enum ", 0},\n"
    accessors = accessors "FN_" sect "_" atype "(lp_" name ", " name ")\n"

    if (vtype == "char*") {
	exps = exps "\tBOOL " name "_EXP;\n"
	exp_values = exp_values "\tFalse, /* " name "_EXP */\n"
    }

    next
}

/./ {
    print "Extraneous line:" $0
    defines = ""
    exit
}

END {
    if (sect != "" && defines != "") {
	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"
	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
    }
}
