summaryrefslogtreecommitdiff
path: root/source4/pidl/pidl
diff options
context:
space:
mode:
Diffstat (limited to 'source4/pidl/pidl')
-rwxr-xr-xsource4/pidl/pidl31
1 files changed, 16 insertions, 15 deletions
diff --git a/source4/pidl/pidl b/source4/pidl/pidl
index 92395dbac2..d1b8c4480b 100755
--- a/source4/pidl/pidl
+++ b/source4/pidl/pidl
@@ -17,7 +17,7 @@ pidl - An IDL compiler written in Perl
pidl --help
-pidl [--outputdir[=OUTNAME]] [--parse-idl-tree] [--dump-idl-tree] [--dump-ndr-tree] [--header[=OUTPUT]] [--ejs[=OUTPUT]] [--swig[=OUTPUT]] [--uint-enums] [--ndr-parser[=OUTPUT]] [--client] [--server] [--dcom-proxy] [--com-header] [--warn-compat] [--quiet] [--verbose] [--template] [--eth-parser[=OUTPUT]] [--diff] [--dump-idl] [--tdr-header=[OUTPUT]] [--tdr-parser[=OUTPUT]] [--samba3-header[=OUTPUT]] [--samba3-parser=[OUTPUT]] [--samba3-server=[OUTPUT]] [--samba3-template[=OUTPUT]] [--samba3-client[=OUTPUT]] [<idlfile>.idl]...
+pidl [--outputdir[=OUTNAME]] [--parse-idl-tree] [--dump-idl-tree] [--dump-ndr-tree] [--header[=OUTPUT]] [--ejs[=OUTPUT]] [--swig[=OUTPUT]] [--uint-enums] [--ndr-parser[=OUTPUT]] [--client] [--server] [--dcom-proxy] [--com-header] [--warn-compat] [--quiet] [--verbose] [--template] [--eth-parser[=OUTPUT]] [--diff] [--dump-idl] [--tdr-parser[=OUTPUT]] [--samba3-header[=OUTPUT]] [--samba3-parser=[OUTPUT]] [--samba3-server=[OUTPUT]] [--samba3-template[=OUTPUT]] [--samba3-client[=OUTPUT]] [<idlfile>.idl]...
=head1 DESCRIPTION
@@ -77,6 +77,12 @@ Generate a C file and C header containing NDR parsers. The filename for
the parser defaults to ndr_OUTNAME.c. The header filename will be the
parser filename with the extension changed from .c to .h.
+=item I<--tdr-parser>
+
+Generate a C file and C header containing TDR parsers. The filename for
+the parser defaults to tdr_OUTNAME.c. The header filename will be the
+parser filename with the extension changed from .c to .h.
+
=item I<--server>
Generate boilerplate for the RPC server that implements
@@ -360,7 +366,7 @@ usesgetlasterror, vararg, vi_progid, wire_marshal.
$ ./pidl --eth-parser -- atsvc.idl
# Generating a TDR parser and header
- $ ./pidl --tdr-parser --tdr-header --header -- regf.idl
+ $ ./pidl --tdr-parser --header -- regf.idl
# Generating a Samba3 parser, client and server
$ ./pidl --samba3-parser --samba3-server --samba3-client -- dfs.idl
@@ -462,7 +468,6 @@ my($opt_template) = 0;
my($opt_client);
my($opt_server);
my($opt_ndr_parser);
-my($opt_tdr_header);
my($opt_tdr_parser);
my($opt_eth_parser);
my($opt_swig);
@@ -503,7 +508,6 @@ Samba 4 output:
--uint-enums don't use C enums, instead use uint* types
--ndr-parser[=OUTFILE] create a C NDR parser [ndr_BASENAME.c]
--client[=OUTFILE] create a C NDR client [ndr_BASENAME_c.c]
- --tdr-header[=OUTFILE] create a C TDR header file [tdr_BASENAME.h]
--tdr-parser[=OUTFILE] create a C TDR parser [tdr_BASENAME.c]
--ejs[=OUTFILE] create ejs wrapper file [BASENAME_ejs.c]
--swig[=OUTFILE] create swig wrapper file [BASENAME.i]
@@ -541,7 +545,6 @@ my $result = GetOptions (
'samba3-client:s' => \$opt_samba3_client,
'header:s' => \$opt_header,
'server:s' => \$opt_server,
- 'tdr-header:s' => \$opt_tdr_header,
'tdr-parser:s' => \$opt_tdr_parser,
'template' => \$opt_template,
'ndr-parser:s' => \$opt_ndr_parser,
@@ -656,10 +659,10 @@ sub process_file($)
SaveStructure($ndr_file, $ndr) or die "Failed to save $ndr_file\n";
}
+ my $gen_header = ($opt_header or "$outputdir/$basename.h");
if (defined($opt_header)) {
- my $header = ($opt_header or "$outputdir/$basename.h");
require Parse::Pidl::Samba4::Header;
- FileSave($header, Parse::Pidl::Samba4::Header::Parse($pidl));
+ FileSave($gen_header, Parse::Pidl::Samba4::Header::Parse($pidl));
}
my $h_filename = "$outputdir/ndr_$basename.h";
@@ -744,16 +747,14 @@ $dcom
FileSave($eheader, $dh) if defined($dh);
}
- my $tdr_parser = ($opt_tdr_parser or "$outputdir/tdr_$basename.c");
- my $tdr_header = ($opt_tdr_header or "$outputdir/tdr_$basename.h");
if (defined($opt_tdr_parser)) {
+ my $tdr_parser = ($opt_tdr_parser or "$outputdir/tdr_$basename.c");
+ my $tdr_header = $tdr_parser;
+ $tdr_header =~ s/\.c$/\.h/;
require Parse::Pidl::Samba4::TDR;
- FileSave($tdr_parser, Parse::Pidl::Samba4::TDR::Parser($pidl, $tdr_header));
- }
-
- if (defined($opt_tdr_header)) {
- require Parse::Pidl::Samba4::TDR;
- FileSave($tdr_header, Parse::Pidl::Samba4::TDR::Header($pidl, $outputdir,$basename));
+ my ($hdr,$prsr) = Parse::Pidl::Samba4::TDR::Parser($pidl, $tdr_header, $gen_header);
+ FileSave($tdr_parser, $prsr);
+ FileSave($tdr_header, $hdr);
}
if ($opt_template) {