diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-05-04 16:04:08 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:05:37 -0500 |
commit | e81fd2e11918a775175a91744bced45689343914 (patch) | |
tree | 19dd5122843d0af49ef66cd2c6776f286719e5c9 /source4/pidl/pidl | |
parent | a3898df957f0aac183c16d0d613d965a70c1a49c (diff) | |
download | samba-e81fd2e11918a775175a91744bced45689343914.tar.gz samba-e81fd2e11918a775175a91744bced45689343914.tar.bz2 samba-e81fd2e11918a775175a91744bced45689343914.zip |
r15437: Add generator that creates Samba3 client code which uses Samba4's NDR
routines.
(This used to be commit 538be4a6319b6f8235ed450740784104671ab0b5)
Diffstat (limited to 'source4/pidl/pidl')
-rwxr-xr-x | source4/pidl/pidl | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/source4/pidl/pidl b/source4/pidl/pidl index 314ab7c60b..5784822f26 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-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]] [--samba3-ndr-client[=OUTPUT]] [<idlfile>.idl]... =head1 DESCRIPTION @@ -144,6 +144,12 @@ rpc_server/. Filename defaults to srv_BASENAME_nt.c Generate client calls for Samba 3, to be placed in rpc_client/. Filename defaults to cli_BASENAME.c. +=item I<--samba3-ndr-client> + +Generate client calls for Samba3, to be placed in rpc_client/. Instead of +calling out to the code in Samba3's rpc_parse/, this will call out to +Samba4's NDR code instead. + =back =head1 IDL SYNTAX @@ -465,6 +471,7 @@ my($opt_samba3_parser); my($opt_samba3_server); my($opt_samba3_template); my($opt_samba3_client); +my($opt_samba3_ndr_client); my($opt_template) = 0; my($opt_client); my($opt_server); @@ -523,6 +530,8 @@ Samba 3 output: --samba3-template[=OUTF]create template implementation [srv_BASENAME_nt.c] --samba3-server[=OUTF] create server side wrappers for Samba3 [srv_BASENAME.c] --samba3-client[=OUTF] create client calls for Samba3 [cli_BASENAME.c] + --samba3-ndr-client[=OUTF] create client calls for Samba3 + using Samba4's NDR code [cli_BASENAME.c] Ethereal parsers: --eth-parser[=OUTFILE] create ethereal parser and header @@ -544,6 +553,7 @@ my $result = GetOptions ( 'samba3-server:s' => \$opt_samba3_server, 'samba3-template:s' => \$opt_samba3_template, 'samba3-client:s' => \$opt_samba3_client, + 'samba3-ndr-client:s' => \$opt_samba3_ndr_client, 'header:s' => \$opt_header, 'server:s' => \$opt_server, 'tdr-parser:s' => \$opt_tdr_parser, @@ -570,6 +580,11 @@ if ($opt_help) { exit(0); } +if ($opt_samba3_client and $opt_samba3_ndr_client) { + print "--samba3-client and --samba3-ndr-client can not be used together\n"; + exit(1); +} + sub process_file($) { my $idl_file = shift; @@ -645,7 +660,8 @@ sub process_file($) defined($opt_ndr_parser) or defined($opt_ejs) or defined($opt_dump_ndr_tree) or defined($opt_samba3_header) or defined($opt_samba3_parser) or defined($opt_samba3_server) or - defined($opt_samba3_template) or defined($opt_samba3_client)) { + defined($opt_samba3_template) or defined($opt_samba3_client) or + defined($opt_samba3_ndr_client)) { require Parse::Pidl::NDR; $ndr = Parse::Pidl::NDR::Parse($pidl); } @@ -756,7 +772,7 @@ $dcom if (defined($opt_samba3_header) or defined($opt_samba3_parser) or defined($opt_samba3_server) or defined($opt_samba3_client) or - defined($opt_samba3_template)) { + defined($opt_samba3_ndr_client) or defined($opt_samba3_template)) { require Parse::Pidl::Samba3::Types; Parse::Pidl::Samba3::Types::LoadTypes($ndr); } @@ -791,6 +807,13 @@ $dcom FileSave($header, Parse::Pidl::Samba3::Client::Parse($ndr, $basename)); } + if (defined($opt_samba3_ndr_client)) { + my $header = ($opt_samba3_ndr_client or "$outputdir/cli_$basename.c"); + require Parse::Pidl::Samba3::ClientNDR; + FileSave($header, Parse::Pidl::Samba3::ClientNDR::Parse($ndr, $basename)); + } + + } if (scalar(@ARGV) == 0) { |