summaryrefslogtreecommitdiff
path: root/source4/build/pidl
diff options
context:
space:
mode:
Diffstat (limited to 'source4/build/pidl')
-rwxr-xr-xsource4/build/pidl/pidl.pl2
-rwxr-xr-xsource4/build/pidl/tables.pl97
2 files changed, 98 insertions, 1 deletions
diff --git a/source4/build/pidl/pidl.pl b/source4/build/pidl/pidl.pl
index b8802ebe23..edeab1564e 100755
--- a/source4/build/pidl/pidl.pl
+++ b/source4/build/pidl/pidl.pl
@@ -3,7 +3,7 @@
###################################################
# package to parse IDL files and generate code for
# rpc functions in Samba
-# Copyright tridge@samba.org 2000
+# Copyright tridge@samba.org 2000-2003
# released under the GNU GPL
use strict;
diff --git a/source4/build/pidl/tables.pl b/source4/build/pidl/tables.pl
new file mode 100755
index 0000000000..fa53af1c09
--- /dev/null
+++ b/source4/build/pidl/tables.pl
@@ -0,0 +1,97 @@
+#!/usr/bin/perl -w
+
+###################################################
+# package to produce a table of all idl parsers
+# Copyright tridge@samba.org 2003
+# released under the GNU GPL
+
+use strict;
+
+use Getopt::Long;
+use File::Basename;
+
+my($opt_output);
+my($opt_help) = 0;
+
+
+#########################################
+# display help text
+sub ShowHelp()
+{
+ print "
+ perl IDL table generator
+ Copyright (C) tridge\@samba.org
+
+ Usage: tables.pl [options] <idlfile>
+
+ Options:
+ --output OUTNAME put output in OUTNAME.*
+ \n";
+ exit(0);
+}
+
+# main program
+GetOptions (
+ 'help|h|?' => \$opt_help,
+ 'output=s' => \$opt_output,
+ );
+
+if ($opt_help) {
+ ShowHelp();
+ exit(0);
+}
+
+
+###################################
+# extract table entries from 1 file
+sub process_file($)
+{
+ my $filename = shift;
+ open(FILE, $filename) || die "unable to open $filename\n";
+
+ print TABLEH "#include \"$filename\"\n";
+
+ while (my $line = <FILE>) {
+ if ($line =~ /extern const struct dcerpc_interface_table (\w+);/) {
+ print TABLEC "\t&$1,\n";
+ }
+ }
+
+ close(FILE);
+}
+
+
+open(TABLEH, ">$opt_output.h") || die "failed to open $opt_output.h\n";
+open(TABLEC, ">$opt_output.c") || die "failed to open $opt_output.c\n";
+
+#include "includes.h"
+
+#define NDR_BASE_MARSHALL_SIZE 1024
+
+print TABLEC "
+#include \"includes.h\"
+
+/*
+ generated by pidl IDL table generator
+*/
+const struct dcerpc_interface_table *dcerpc_pipes[] = {
+";
+
+print TABLEH "
+/*
+ table headers generated by pidl IDL table generator
+*/
+
+extern const struct dcerpc_interface_table *dcerpc_pipes[];
+
+";
+
+foreach my $filename (@ARGV) {
+ process_file($filename);
+}
+
+
+print TABLEC "\tNULL\n};\n";
+
+close(TABLEH);
+close(TABLEC);