pidl:Samba3/ClientNDR: implement rpccli_ stubs on top of dcerpc_ stubs
[samba.git] / pidl / pidl
index 02817c093b629890bfcbaf7912ad4337c037c96b..2a46e92925c18eb7e7a0052fffad53ea0dcbf26f 100755 (executable)
--- a/pidl/pidl
+++ b/pidl/pidl
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!/usr/bin/env perl
 
 ###################################################
 # package to parse IDL files and generate code for
@@ -609,7 +609,7 @@ sub process_file($)
        }
 
        require Parse::Pidl::Typelist;
-       Parse::Pidl::Typelist::LoadIdl($pidl);
+       Parse::Pidl::Typelist::LoadIdl($pidl, $basename);
 
        if (defined($opt_dump_idl_tree)) {
                my($pidl_file) = ($opt_dump_idl_tree or "$outputdir/$basename.pidl");
@@ -653,7 +653,18 @@ sub process_file($)
 
        $pidl = Parse::Pidl::ODL::ODL2IDL($pidl, dirname($idl_file), \@opt_incdirs);
 
-       if (defined($opt_ws_parser) or 
+       if (defined($opt_ws_parser)) {
+         require Parse::Pidl::Wireshark::NDR;
+
+         my $cnffile = $idl_file;
+         $cnffile =~ s/\.idl$/\.cnf/;
+
+         my $generator = new Parse::Pidl::Wireshark::NDR();
+         $generator->Initialize($cnffile);
+       }
+
+
+       if (defined($opt_ws_parser) or
            defined($opt_client) or
            defined($opt_server) or 
            defined($opt_header) or
@@ -681,13 +692,15 @@ sub process_file($)
        }
 
        my $h_filename = "$outputdir/ndr_$basename.h";
-       if (defined($opt_client)) {
+       my $c_header = "$outputdir/ndr_$basename\_c.h";
+       if (defined($opt_client) or defined($opt_samba3_ndr_client)) {
                require Parse::Pidl::Samba4::NDR::Client;
                my ($c_client) = ($opt_client or "$outputdir/ndr_$basename\_c.c");
-               my ($c_header) = $c_client;
+               $c_header = $c_client;
                $c_header =~ s/\.c$/.h/;
 
-               my ($srcd,$hdrd) = Parse::Pidl::Samba4::NDR::Client::Parse(
+               my $generator = new Parse::Pidl::Samba4::NDR::Client();
+               my ($srcd,$hdrd) = $generator->Parse(
                        $ndr,$gen_header,$h_filename,$c_header);
 
                FileSave($c_client, $srcd);
@@ -697,10 +710,9 @@ sub process_file($)
        if (defined($opt_python)) {
                require Parse::Pidl::Samba4::Python;
                my $generator = new Parse::Pidl::Samba4::Python(); 
-               my ($hdr,$prsr) = $generator->Parse($basename, $ndr, 
+               my ($prsr) = $generator->Parse($basename, $ndr, 
                                        "$outputdir/ndr_$basename\_c.h", $h_filename);
                FileSave("$outputdir/py_$basename.c", $prsr);
-               FileSave("$outputdir/py_$basename.h", $hdr);
        }
 
        if (defined($opt_server)) {
@@ -761,7 +773,7 @@ sub process_file($)
                my $header = $client; $header =~ s/\.c$/\.h/;
                require Parse::Pidl::Samba3::ClientNDR;
                my $generator = new Parse::Pidl::Samba3::ClientNDR();
-               my ($c_code,$h_code) = $generator->Parse($ndr, $header, $h_filename);
+               my ($c_code,$h_code) = $generator->Parse($ndr, $header, $c_header);
                FileSave($client, $c_code);
                FileSave($header, $h_code);
        }