diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-05-06 11:44:00 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:05:38 -0500 |
commit | a3f2ed12b9cde474a8d5ec96eb0bd0b6211c45a9 (patch) | |
tree | c4e9fb9f4815ebc7850458f70c94a507564c91f0 | |
parent | ce8dad9396646fed1fa29c048d6ecc4dbde0a8ec (diff) | |
download | samba-a3f2ed12b9cde474a8d5ec96eb0bd0b6211c45a9.tar.gz samba-a3f2ed12b9cde474a8d5ec96eb0bd0b6211c45a9.tar.bz2 samba-a3f2ed12b9cde474a8d5ec96eb0bd0b6211c45a9.zip |
r15470: Write header file with prototypes for Samba3-Client-With-Samba4-NDR code.
(This used to be commit a2bb0b6012b14787825a9cd5f33e2c0e989b65a7)
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm | 22 | ||||
-rwxr-xr-x | source4/pidl/pidl | 7 |
2 files changed, 19 insertions, 10 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm b/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm index ec3287ffb0..92bb440e7c 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm @@ -15,13 +15,16 @@ use Parse::Pidl::Samba3::Types qw(DeclLong); use vars qw($VERSION); $VERSION = '0.01'; -my $res = ""; +my $res; +my $res_hdr; my $tabs = ""; sub indent() { $tabs.="\t"; } sub deindent() { $tabs = substr($tabs, 1); } sub pidl($) { $res .= $tabs.(shift)."\n"; } +sub pidl_hdr($) { $res_hdr .= (shift)."\n"; } sub fatal($$) { my ($e,$s) = @_; die("$e->{ORIGINAL}->{FILE}:$e->{ORIGINAL}->{LINE}: $s\n"); } sub warning($$) { my ($e,$s) = @_; warn("$e->{ORIGINAL}->{FILE}:$e->{ORIGINAL}->{LINE}: $s\n"); } +sub fn_declare($) { my ($n) = @_; pidl $n; pidl_hdr "$n;"; } sub CopyLevel($$$$) { @@ -51,12 +54,12 @@ sub ParseFunction($$) my $inargs = ""; my $defargs = ""; my $uif = uc($if->{NAME}); - my $ufn = uc($fn->{NAME}); + my $ufn = "DCERPC_".uc($fn->{NAME}); foreach (@{$fn->{ELEMENTS}}) { $defargs .= ", " . DeclLong($_); } - pidl "NTSTATUS rpccli_$fn->{NAME}(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx$defargs)"; + fn_declare "NTSTATUS rpccli_$fn->{NAME}(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx$defargs)"; pidl "{"; indent; pidl "struct $fn->{NAME} r;"; @@ -79,10 +82,7 @@ sub ParseFunction($$) foreach my $e (@{$fn->{ELEMENTS}}) { next unless (grep(/out/, @{$e->{DIRECTION}})); - if ($e->{LEVELS}[0]->{TYPE} ne "POINTER") { - warning($e, "First element not a pointer for [out] argument"); - next; - } + fatal($e, "[out] argument is not a pointer") if ($e->{LEVELS}[0]->{TYPE} ne "POINTER"); CopyLevel($e, $e->{LEVELS}[1], $e->{NAME}, "r.out.$e->{NAME}"); } @@ -109,7 +109,12 @@ sub ParseInterface($) { my $if = shift; + my $uif = uc($if->{NAME}); + + pidl_hdr "#ifndef __CLI_$uif\__"; + pidl_hdr "#define __CLI_$uif\__"; ParseFunction($if, $_) foreach (@{$if->{FUNCTIONS}}); + pidl_hdr "#endif /* __CLI_$uif\__ */"; } sub Parse($$) @@ -117,6 +122,7 @@ sub Parse($$) my($ndr,$filename) = @_; $res = ""; + $res_hdr = ""; pidl "/*"; pidl " * Unix SMB/CIFS implementation."; @@ -130,7 +136,7 @@ sub Parse($$) ParseInterface($_) if ($_->{TYPE} eq "INTERFACE"); } - return $res; + return ($res, $res_hdr); } 1; diff --git a/source4/pidl/pidl b/source4/pidl/pidl index 5784822f26..ef3334f977 100755 --- a/source4/pidl/pidl +++ b/source4/pidl/pidl @@ -808,9 +808,12 @@ $dcom } if (defined($opt_samba3_ndr_client)) { - my $header = ($opt_samba3_ndr_client or "$outputdir/cli_$basename.c"); + my $client = ($opt_samba3_ndr_client or "$outputdir/cli_$basename.c"); + my $header = $client; $header =~ s/\.c$/\.h/; require Parse::Pidl::Samba3::ClientNDR; - FileSave($header, Parse::Pidl::Samba3::ClientNDR::Parse($ndr, $basename)); + my ($c_code,$h_code) = Parse::Pidl::Samba3::ClientNDR::Parse($ndr, $basename); + FileSave($client, $c_code); + FileSave($header, $h_code); } |