Merge tag 'debian/1.8.5p2-1' into squeeze
[debian/sudo] / mkdefaults
diff --git a/mkdefaults b/mkdefaults
deleted file mode 100755 (executable)
index 90f3b0c..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Generate sudo_defs_table and associated defines
-#
-# Input should be formatted thusly:
-#
-# var_name
-#      TYPE
-#      description (or NULL)
-#      array of struct def_values if TYPE == T_TUPLE
-
-# Deal with optional -o (output) argument
-if ($#ARGV > 0 && $ARGV[0] eq "-o") {
-    shift;
-    $header = $cfile = shift;
-    $header .= '.h';
-    $cfile .= '.c';
-}
-die "usage: $0 [input_file]\n" unless $#ARGV == -1 || $#ARGV == 0;
-
-$infile = $ARGV[0] || "def_data.in";
-if (!defined($header)) {
-    $header = $infile;
-    $header =~ s/(\.in)?$/.h/;
-}
-if (!defined($cfile)) {
-    $cfile = $infile;
-    $cfile =~ s/(\.in)?$/.c/;
-}
-
-open(IN, "<$infile") || die "$0: can't open $infile: $!\n";
-open(HEADER, ">$header") || die "$0: can't open $header: $!\n";
-open(CFILE, ">$cfile") || die "$0: can't open $cfile: $!\n";
-
-$count = 0;
-@tuple_values = ( "never" );
-@records = ();
-while(<IN>) {
-    chomp;
-    s/\s*#.*$//;
-    next if /^\s*$/;
-
-    if (/^\S/) {
-       # Store previous record and begin new one
-       $records[$count++] = [$var, $type, $desc, $values, $callback] if defined($var);
-
-       $var = $_;
-       $type = '';
-       $desc = undef;
-       $values = undef;
-       $callback = undef;
-       $field = 0;
-    } else {
-       $field++;
-       s/^\s+//;
-       s/\s+$//;
-       if ($field == 1) {
-           # type
-           $type = $_;
-       } elsif ($field == 2) {
-           # description
-           if ($_ eq "NULL") {
-               $desc = "NULL";
-           } else {
-               # Strip leading and trailing double quote and escape the rest
-               s/^"//;
-               s/"$//;
-               s/"/\\"/g;
-               $desc = "\"$_\"";
-           }
-       } elsif ($field == 3 || $field == 4) {
-           if (s/^\*//) {
-               $callback = $_;
-           } else {
-               die "$0: syntax error near line $.\n" if $type !~ /^T_TUPLE/;
-               $values = [ split ];
-               foreach $v (@$values) {
-                   push(@tuple_values, $v) unless grep(/^$v$/, @tuple_values);
-               }
-           }
-       } else {
-           die "$0: syntax error near line $.\n";
-       }
-    }
-}
-$records[$count++] = [$var, $type, $desc, $values, $callback] if defined($var);
-
-# Print out value arrays
-for ($i = 0; $i < $count; $i++) {
-    if (defined($records[$i]->[3])) {
-       die "Values list specified for non-tupple\n" unless
-           $records[$i]->[1] =~ /^T_TUPLE/;
-       printf CFILE "static struct def_values def_data_%s[] = {\n", $records[$i]->[0];
-       foreach (@{$records[$i]->[3]}) {
-           print CFILE "    { \"$_\", $_ },\n";
-       }
-       print CFILE "    { NULL, 0 },\n";
-       print CFILE "};\n\n";
-    }
-}
-
-# Print each record
-print CFILE "struct sudo_defs_types sudo_defs_table[] = {\n    {\n";
-for ($i = 0; $i < $count; $i++) {
-    &print_record($records[$i], $i);
-}
-print CFILE "\tNULL, 0, NULL\n    }\n};\n";
-
-# Print out def_tuple
-if (@tuple_values) {
-    print HEADER "\nenum def_tupple {\n";
-    for ($i = 0; $i <= $#tuple_values; $i++) {
-       printf HEADER "\t%s%s\n", $tuple_values[$i],
-           $i != $#tuple_values ? "," : "";
-    }
-    print HEADER "};\n";
-}
-
-close(IN);
-close(HEADER);
-close(CFILE);
-
-sub print_record {
-    my ($rec, $recnum) = @_;
-    my ($i, $v, $defname);
-    # each variable gets a macro to access its value
-    for ($rec->[1]) {
-       if    (/^T_U?INT/)  { $v = "ival"; }
-       elsif (/^T_STR/)    { $v = "str"; }
-       elsif (/^T_FLAG/)   { $v = "flag"; }
-       elsif (/^T_MODE/)   { $v = "mode"; }
-       elsif (/^T_LIST/)   { $v = "list"; }
-       elsif (/^T_LOGFAC/) { $v = "ival"; }
-       elsif (/^T_LOGPRI/) { $v = "ival"; }
-       elsif (/^T_TUPLE/)  { $v = "tuple"; }
-       elsif (/^T_FLOAT/)  { $v = "fval"; }
-       else { die "$0: unknown defaults type: $_\n"; }
-    }
-    printf HEADER "#define %-23s (sudo_defs_table[$recnum].sd_un.${v})\n",
-       "def_$rec->[0]";
-
-    $defname = "I_" . uc($rec->[0]);
-    printf HEADER "#define %-24s%d", $defname, $recnum;
-    #print HEADER "\t/* $rec->[2] */" if defined($rec->[2]);
-    print HEADER "\n";
-
-    print CFILE "\t\"$rec->[0]\", $rec->[1],\n\t$rec->[2],\n";
-    if (defined($rec->[3])) {
-       printf CFILE "\tdef_data_$rec->[0],\n";
-    } else {
-       printf CFILE "\tNULL,\n";
-    }
-    printf CFILE "\t$rec->[4],\n" if defined($rec->[4]);
-    print CFILE "    }, {\n";
-}