- if ($opt_diff) {
- my($tempfile) = util::ChangeExtension($output, ".tmp");
- util::FileSave($tempfile, IdlDump::Dump($pidl));
- system("diff -wu $idl_file $tempfile");
- unlink($tempfile);
+ if (defined($opt_header) or defined($opt_eth_parser) or defined($opt_eth_header) or $opt_client or $opt_server or defined($opt_parser)) {
+ $ndr = Ndr::Parse($pidl);
+# print util::MyDumper($ndr);
+ }
+
+ if (defined($opt_header)) {
+ my $header = $opt_header;
+ if ($header eq "") {
+ $header = util::ChangeExtension($output, ".h");
+ }
+ util::FileSave($header, NdrHeader::Parse($ndr));
+ if ($opt_swig) {
+ my($filename) = $output;
+ $filename =~ s/\/ndr_/\//;
+ $filename = util::ChangeExtension($filename, ".i");
+ IdlSwig::RewriteHeader($pidl, $header, $filename);
+ }
+ }
+
+ if (defined($opt_eth_header)) {
+ my($eparserhdr) = $opt_eth_header;
+ if ($eparserhdr eq "") {
+ $eparserhdr = dirname($output) . "/packet-dcerpc-$basename.h";
+ }
+
+ util::FileSave($eparserhdr, EthHeader::Parse($ndr));
+ }
+
+ if ($opt_client) {
+ my ($client) = util::ChangeExtension($output, "_c.c");
+ my $res = "";
+ my $h_filename = util::ChangeExtension($output, ".h");
+
+ $res .= "#include \"includes.h\"\n";
+ $res .= "#include \"$h_filename\"\n\n";
+
+ foreach my $x (@{$pidl}) {
+ $res .= NdrClient::ParseInterface($x);
+ }
+
+ util::FileSave($client, $res);