diff -r a9d4531388d0 -r d90029decf65 bldsystemtools/commonbldutils/BxCopy.pm --- a/bldsystemtools/commonbldutils/BxCopy.pm Wed Mar 31 23:20:42 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ -# Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# This module implements the MD5 version of the Evalid's comapre -# -# - -package BxCopy; - -use strict; -use File::Copy; -use File::Find; -use File::Path; - -# FilterDir -# -# Inputs -# $iDir - Directory to process -# $iExclude - Reference to array of regular expression patterns to exclude -# $iInclude - Reference to array of regular expression patterns to include -# -# Outputs -# @iFinalFileList - Filtered list relative filenames -# -# Description -# This function produces a filtered list of filenames in the specified directory - -sub FilterDir -{ - my ($iDir,$iExclude,$iInclude) = @_; - - my (@iFileList, @iFinalFileList); - my ($iExcludeCount, $iIncludeCount); - - # Produce full filelist listing without directory names - # Remove the specified directory path from the front of the filename - find sub { - if (!-d) - { - my $filepath = $File::Find::name; - $filepath=~ s#^$iDir/##i; - push @iFileList, $filepath; - } - }, $iDir; - - #Calculate the number of regex includes and excludes to optimise the filtering - if (defined $iExclude){ - $iExcludeCount = scalar(@$iExclude); - } else { - $iExcludeCount = 0; - } - - if (defined $iInclude){ - $iIncludeCount = scalar(@$iInclude); - } else { - $iIncludeCount = 0; - } - - # return unmodified list of files if there are no regexs to fitler it by - return \@iFileList if (($iExcludeCount == 0) && ($iIncludeCount == 0)); - - foreach my $iFile ( @iFileList) - { - my $iExcludeFile = 0; - - # Process all Exclude RegEx to see if this file matches - foreach my $iExcludeRegEx (@$iExclude) - { - if ($iFile =~ /$iExcludeRegEx/i) - { - # Mark this file to be excluded from the final list - $iExcludeFile = 1; - } - } - - # Process all Include RegEx to see if this file matches - foreach my $iIncludeRegEx (@$iInclude) - { - if ($iFile =~ /$iIncludeRegEx/i) - { - # Mark this file to be Included in the final list - $iExcludeFile = 0; - } - } - - # Added the file to the final list based on the flag - push @iFinalFileList, $iFile unless $iExcludeFile; - } - - return \@iFinalFileList; - -} - -# CopyFiles -# -# Inputs -# $iSource - Directory to copy from -# $iTarget - Directory to copy to -# $iCopyFiles - Reference to an array of relative filenames to copy -# -# Outputs -# -# Description -# This function copies files from one dir to another - -sub CopyFiles -{ - my ($iSource, $iTarget, $iCopyFiles, $iVerbose, $iNoAction) = @_; - - print "No Copy specified, would have performed:-\n" if (defined $iNoAction); - - #Loop through the list of files - my ($j); - for($j = 0; $j < scalar(@$iCopyFiles); $j++) - { - my ($iFile) = $$iCopyFiles[$j]; - #Check if the to final directory exists, if not create it - my ($iDir) = $iFile =~ m#(.*)/.*#; - - if (defined $iVerbose) - { - print $iSource."/".$iFile." => ".$iTarget."/".$iFile."\n"; - } - - if (!defined $iNoAction) - { - if (!-d $iTarget."/".$iDir) - { - mkpath ($iTarget."/".$iDir) || die "ERROR: Cannot create ".$iTarget."/".$iDir; - } - copy($iSource."/".$iFile,$iTarget."/".$iFile) || die "ERROR: Failed to copy ".$iSource."/".$iFile." to ".$iTarget."/".$iFile." $!"; - } - } - - print "$j files processed\n"; -} - -1;