diff options
Diffstat (limited to 'source4/build/pidl/tables.pl')
-rwxr-xr-x | source4/build/pidl/tables.pl | 97 |
1 files changed, 97 insertions, 0 deletions
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); |