summaryrefslogtreecommitdiff
path: root/source4/build/pidl/pidl.pl
diff options
context:
space:
mode:
Diffstat (limited to 'source4/build/pidl/pidl.pl')
-rwxr-xr-xsource4/build/pidl/pidl.pl33
1 files changed, 14 insertions, 19 deletions
diff --git a/source4/build/pidl/pidl.pl b/source4/build/pidl/pidl.pl
index 4e79eb92f6..30dcde929a 100755
--- a/source4/build/pidl/pidl.pl
+++ b/source4/build/pidl/pidl.pl
@@ -90,6 +90,7 @@ sub process_file($)
{
my $idl_file = shift;
my $output;
+ my $pidl;
my $basename = basename($idl_file, ".idl");
@@ -104,47 +105,41 @@ sub process_file($)
print "Compiling $idl_file\n";
if ($opt_parse) {
- my($idl) = IdlParse($idl_file);
- defined $idl || die "Failed to parse $idl_file";
- util::SaveStructure($pidl_file, $idl) || die "Failed to save $pidl_file";
-
- IdlValidator::Validate($idl);
+ $pidl = IdlParse($idl_file);
+ defined $pidl || die "Failed to parse $idl_file";
+ IdlValidator::Validate($pidl);
+ if ($opt_keep && !util::SaveStructure($pidl_file, $pidl)) {
+ die "Failed to save $pidl_file\n";
+ }
+ } else {
+ $pidl = util::LoadStructure($pidl_file);
}
if ($opt_dump) {
- my($idl) = util::LoadStructure($pidl_file);
- print IdlDump::Dump($idl);
+ print IdlDump::Dump($pidl);
}
if ($opt_header) {
- my($idl) = util::LoadStructure($pidl_file);
my($header) = util::ChangeExtension($output, "h");
- util::FileSave($header, IdlHeader::Parse($idl));
+ util::FileSave($header, IdlHeader::Parse($pidl));
}
if ($opt_parser) {
- my($idl) = util::LoadStructure($pidl_file);
my($parser) = util::ChangeExtension($output, "c");
- IdlParser::Parse($idl, $parser);
+ IdlParser::Parse($pidl, $parser);
}
if ($opt_eparser) {
- my($idl) = util::LoadStructure($pidl_file);
my($parser) = util::ChangeExtension($output, "c");
- util::FileSave($parser, IdlEParser::Parse($idl));
+ util::FileSave($parser, IdlEParser::Parse($pidl));
}
if ($opt_diff) {
- my($idl) = util::LoadStructure($pidl_file);
my($tempfile) = util::ChangeExtension($output, "tmp");
- util::FileSave($tempfile, IdlDump::Dump($idl));
+ util::FileSave($tempfile, IdlDump::Dump($pidl));
system("diff -wu $idl_file $tempfile");
unlink($tempfile);
}
-
- if (!$opt_keep) {
- system("rm -f $pidl_file");
- }
}