diff options
author | elliott_c <ocielliottc@users.noreply.github.com> | 2003-04-29 18:04:55 +0000 |
---|---|---|
committer | elliott_c <ocielliottc@users.noreply.github.com> | 2003-04-29 18:04:55 +0000 |
commit | 8203919207bd17fb8d8fe0d9595c76f4ba77af1a (patch) | |
tree | d92909626ea1565dc9575bfa3c411dfa3aed1c7a | |
parent | 62b75506a6c317eb004204add22f200c3b16d7c2 (diff) | |
download | MPC-8203919207bd17fb8d8fe0d9595c76f4ba77af1a.tar.gz |
ChangeLogTag: Tue Apr 29 12:58:51 2003 Chad Elliott <elliott_c@ociweb.com>
-rw-r--r-- | modules/Creator.pm | 13 | ||||
-rw-r--r-- | modules/EM3WorkspaceCreator.pm | 3 | ||||
-rw-r--r-- | modules/NMakeWorkspaceCreator.pm | 3 | ||||
-rw-r--r-- | modules/VA4WorkspaceCreator.pm | 3 | ||||
-rw-r--r-- | modules/VC6WorkspaceCreator.pm | 3 | ||||
-rw-r--r-- | modules/VC7WorkspaceCreator.pm | 3 | ||||
-rw-r--r-- | modules/WorkspaceCreator.pm | 40 |
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'} ? |