summaryrefslogtreecommitdiff
path: root/source4/pidl/pidl
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-05-04 16:04:08 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:05:37 -0500
commite81fd2e11918a775175a91744bced45689343914 (patch)
tree19dd5122843d0af49ef66cd2c6776f286719e5c9 /source4/pidl/pidl
parenta3898df957f0aac183c16d0d613d965a70c1a49c (diff)
downloadsamba-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-xsource4/pidl/pidl29
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) {