3 # Generate sudo_defs_table and associated defines
5 # Input should be formatted thusly:
9 # description (or NULL)
11 # Deal with optional -o (output) argument
12 if ($#ARGV > 0 && $ARGV[0] eq "-o") {
14 $header = $cfile = shift;
18 die "usage: $0 input_file" unless $#ARGV == 0;
21 if (!defined($header)) {
23 $header =~ s/(\.in)?$/.h/;
25 if (!defined($cfile)) {
27 $cfile =~ s/(\.in)?$/.c/;
30 open(IN, "<$infile") || die "$0: can't open $infile: $!\n";
31 open(HEADER, ">$header") || die "$0: can't open $header: $!\n";
32 open(CFILE, ">$cfile") || die "$0: can't open $cfile: $!\n";
34 print CFILE "struct sudo_defs_types sudo_defs_table[] = {\n {\n";
44 &print_record() if defined($var);
47 ($type, $desc) = (undef, undef);
52 die "$0: syntax error near line $.\n" if
53 defined($type) && defined($desc);
56 # Strip leading and trailing double quote and escape the rest
67 print CFILE "\tNULL, 0, NULL\n }\n};\n";
74 $defname = "I_" . uc($var);
75 printf HEADER "#define %-24s%d", $defname, $count;
76 #print HEADER "\t/* $desc */" if defined($desc);
79 $desc = "NULL" unless defined($desc);
80 print CFILE "\t\"$var\", $type,\n\t$desc\n }, {\n";