summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelliott_c <ocielliottc@users.noreply.github.com>2003-04-29 18:04:55 +0000
committerelliott_c <ocielliottc@users.noreply.github.com>2003-04-29 18:04:55 +0000
commit8203919207bd17fb8d8fe0d9595c76f4ba77af1a (patch)
treed92909626ea1565dc9575bfa3c411dfa3aed1c7a
parent62b75506a6c317eb004204add22f200c3b16d7c2 (diff)
downloadMPC-8203919207bd17fb8d8fe0d9595c76f4ba77af1a.tar.gz
ChangeLogTag: Tue Apr 29 12:58:51 2003 Chad Elliott <elliott_c@ociweb.com>
-rw-r--r--modules/Creator.pm13
-rw-r--r--modules/EM3WorkspaceCreator.pm3
-rw-r--r--modules/NMakeWorkspaceCreator.pm3
-rw-r--r--modules/VA4WorkspaceCreator.pm3
-rw-r--r--modules/VC6WorkspaceCreator.pm3
-rw-r--r--modules/VC7WorkspaceCreator.pm3
-rw-r--r--modules/WorkspaceCreator.pm40
7 files changed, 54 insertions, 14 deletions
diff --git a/modules/Creator.pm b/modules/Creator.pm
index 7da4762a..3773f5ce 100644
--- a/modules/Creator.pm
+++ b/modules/Creator.pm
@@ -28,6 +28,8 @@ my(@statekeys) = ('global', 'include', 'template', 'ti',
'addproj', 'progress', 'toplevel', 'baseprojs',
);
+my(%all_written) = ();
+
# ************************************************************
# Subroutine Section
# ************************************************************
@@ -393,6 +395,14 @@ sub transform_file_name {
}
+sub file_written {
+ my($self) = shift;
+ my($file) = shift;
+ my($full) = $self->getcwd() . '/' . $file;
+ return (defined $all_written{$full});
+}
+
+
sub add_file_written {
my($self) = shift;
my($file) = shift;
@@ -405,6 +415,9 @@ sub add_file_written {
}
}
push(@{$self->{'files_written'}}, $file);
+
+ my($full) = $self->getcwd() . '/' . $file;
+ $all_written{$full} = 1;
}
diff --git a/modules/EM3WorkspaceCreator.pm b/modules/EM3WorkspaceCreator.pm
index a149e551..e374de01 100644
--- a/modules/EM3WorkspaceCreator.pm
+++ b/modules/EM3WorkspaceCreator.pm
@@ -25,7 +25,8 @@ use vars qw(@ISA);
sub workspace_file_name {
my($self) = shift;
- return $self->get_workspace_name() . '.vcw';
+ return $self->get_modified_workspace_name($self->get_workspace_name(),
+ '.vcw');
}
diff --git a/modules/NMakeWorkspaceCreator.pm b/modules/NMakeWorkspaceCreator.pm
index b8b3f090..613468a3 100644
--- a/modules/NMakeWorkspaceCreator.pm
+++ b/modules/NMakeWorkspaceCreator.pm
@@ -32,7 +32,8 @@ sub crlf {
sub workspace_file_name {
my($self) = shift;
- return $self->get_workspace_name() . '.mak';
+ return $self->get_modified_workspace_name($self->get_workspace_name(),
+ '.mak');
}
diff --git a/modules/VA4WorkspaceCreator.pm b/modules/VA4WorkspaceCreator.pm
index 53b64969..bc444485 100644
--- a/modules/VA4WorkspaceCreator.pm
+++ b/modules/VA4WorkspaceCreator.pm
@@ -31,7 +31,8 @@ sub crlf {
sub workspace_file_name {
my($self) = shift;
- return $self->get_workspace_name() . '.icp';
+ return $self->get_modified_workspace_name($self->get_workspace_name(),
+ '.icp');
}
diff --git a/modules/VC6WorkspaceCreator.pm b/modules/VC6WorkspaceCreator.pm
index bdb9954f..d3a376a4 100644
--- a/modules/VC6WorkspaceCreator.pm
+++ b/modules/VC6WorkspaceCreator.pm
@@ -31,7 +31,8 @@ sub crlf {
sub workspace_file_name {
my($self) = shift;
- return $self->get_workspace_name() . '.dsw';
+ return $self->get_modified_workspace_name($self->get_workspace_name(),
+ '.dsw');
}
diff --git a/modules/VC7WorkspaceCreator.pm b/modules/VC7WorkspaceCreator.pm
index c0051d45..67c31ec2 100644
--- a/modules/VC7WorkspaceCreator.pm
+++ b/modules/VC7WorkspaceCreator.pm
@@ -31,7 +31,8 @@ sub crlf {
sub workspace_file_name {
my($self) = shift;
- return $self->get_workspace_name() . '.sln';
+ return $self->get_modified_workspace_name($self->get_workspace_name(),
+ '.sln');
}
diff --git a/modules/WorkspaceCreator.pm b/modules/WorkspaceCreator.pm
index 8e39b7dc..cfad36c0 100644
--- a/modules/WorkspaceCreator.pm
+++ b/modules/WorkspaceCreator.pm
@@ -37,6 +37,9 @@ my(%validNames) = ('cmdline' => 1,
my(%allprinfo) = ();
my(%allprojects) = ();
+## Global previous workspace names
+my(%previous_workspace_name) = ();
+
# ************************************************************
# Subroutine Section
# ************************************************************
@@ -72,6 +75,12 @@ sub new {
$self->{'cacheok'} = 1;
$self->{'exclude'} = {};
$self->{'wctype'} = $self->extractType("$self");
+ $self->{'modified_count'} = 0;
+
+ ## Add a hash reference for our workspace type
+ if (!defined $previous_workspace_name{$self->{'wctype'}}) {
+ $previous_workspace_name{$self->{'wctype'}} = {};
+ }
return $self;
}
@@ -118,6 +127,8 @@ sub parse_line {
$status = 0;
}
+ $self->{'current_workspace_name'} = undef;
+ $self->{'modified_count'} = 0;
$self->{'workspace_name'} = undef;
$self->{'projects'} = [];
$self->{'project_info'} = {};
@@ -837,17 +848,28 @@ sub sort_files {
sub get_modified_workspace_name {
- my($self) = shift;
- my($name) = shift;
- my($ext) = shift;
-
- if (!defined $self->{'previous_workspace_name'}) {
- $self->{'previous_workspace_name'} = $self->get_workspace_name();
+ my($self) = shift;
+ my($name) = shift;
+ my($ext) = shift;
+ my($pwd) = $self->getcwd();
+ my($type) = $self->{'wctype'};
+ my($wsname) = $self->get_workspace_name();
+
+ if (!defined $previous_workspace_name{$type}->{$pwd}) {
+ $previous_workspace_name{$type}->{$pwd} = $wsname;
}
- elsif ($self->{'previous_workspace_name'} ne $self->get_workspace_name()) {
- $self->{'previous_workspace_name'} = $self->get_workspace_name();
+ else {
+ my($prefix) = ($name eq $wsname ? $name : "$name.$wsname");
+ $previous_workspace_name{$type}->{$pwd} = $wsname;
+ while($self->file_written("$prefix" .
+ ($self->{'modified_count'} > 0 ?
+ ".$self->{'modified_count'}" : '') .
+ "$ext")) {
+ ++$self->{'modified_count'};
+ }
$self->{'current_workspace_name'} =
- "$name.$self->{'previous_workspace_name'}$ext";
+ "$prefix" . ($self->{'modified_count'} > 0 ?
+ ".$self->{'modified_count'}" : '') . "$ext";
}
return (defined $self->{'current_workspace_name'} ?