diff options
Diffstat (limited to 'source4/pidl/pidl')
-rwxr-xr-x | source4/pidl/pidl | 31 |
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) { |