summaryrefslogtreecommitdiff
path: root/trunk/ACE/bin/DependencyGenerator/DependencyEditor.pm
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/ACE/bin/DependencyGenerator/DependencyEditor.pm')
-rw-r--r--trunk/ACE/bin/DependencyGenerator/DependencyEditor.pm118
1 files changed, 118 insertions, 0 deletions
diff --git a/trunk/ACE/bin/DependencyGenerator/DependencyEditor.pm b/trunk/ACE/bin/DependencyGenerator/DependencyEditor.pm
new file mode 100644
index 00000000000..646ae2ae574
--- /dev/null
+++ b/trunk/ACE/bin/DependencyGenerator/DependencyEditor.pm
@@ -0,0 +1,118 @@
+package DependencyEditor;
+
+# ************************************************************
+# Description : Edits existing dependencies.
+# Author : Chad Elliott
+# Create Date : 2/10/2002
+# ************************************************************
+
+# ************************************************************
+# Pragmas
+# ************************************************************
+
+use strict;
+use FileHandle;
+
+use DependencyGenerator;
+
+# ************************************************************
+# Subroutine Section
+# ************************************************************
+
+sub new {
+ return bless {
+ }, $_[0];
+}
+
+
+sub process {
+ my($self) = shift;
+ my($output) = shift;
+ my($type) = shift;
+ my($noinline) = shift;
+ my($macros) = shift;
+ my($ipaths) = shift;
+ my($replace) = shift;
+ my($exclude) = shift;
+ my($files) = shift;
+
+ ## Back up the original file and receive the contents
+ my($contents) = undef;
+ if (-s $output) {
+ $contents = [];
+ if (!$self->backup($output, $contents)) {
+ print STDERR "ERROR: Unable to backup $output\n";
+ return 1;
+ }
+ }
+
+ ## Write out the new file
+ my($fh) = new FileHandle();
+ if (open($fh, ">$output")) {
+ if (defined $contents) {
+ foreach my $line (@$contents) {
+ print $fh $line;
+ }
+ }
+
+ print $fh "# DO NOT DELETE THIS LINE -- depgen.pl uses it.\n",
+ "# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.\n\n";
+
+ my($dep) = new DependencyGenerator($macros, $ipaths, $replace,
+ $type, $noinline, $exclude);
+ ## Sort the files so the dependencies are reproducible
+ foreach my $file (sort @$files) {
+ print $fh $dep->process($file), "\n";
+ }
+
+ print $fh "# IF YOU PUT ANYTHING HERE IT WILL GO AWAY\n";
+ close($fh);
+ }
+ else {
+ print STDERR "ERROR: Unable to open $output for output\n";
+ return 1;
+ }
+
+ return 0;
+}
+
+
+sub backup {
+ my($self) = shift;
+ my($source) = shift;
+ my($contents) = shift;
+ my($status) = 0;
+ my($fh) = new FileHandle();
+ my($backup) = "$source.bak";
+
+ if (open($fh, $source)) {
+ my($oh) = new FileHandle();
+ if (open($oh, ">$backup")) {
+ my($record) = 1;
+ $status = 1;
+ while(<$fh>) {
+ print $oh $_;
+ if ($record) {
+ if (index($_, 'DO NOT DELETE') >= 0) {
+ $record = undef;
+ }
+ else {
+ push(@$contents, $_);
+ }
+ }
+ }
+ close($oh);
+
+ ## Set file permission
+ my(@buf) = stat($source);
+ if (defined $buf[8] && defined $buf[9]) {
+ utime($buf[8], $buf[9], $backup);
+ }
+ }
+ close($fh);
+ }
+ return $status;
+}
+
+
+1;