diff -r 85578ba0aa08 -r be14ecca790f bldsystemtools/commonbldutils/delta_zip.pl --- a/bldsystemtools/commonbldutils/delta_zip.pl Fri Apr 16 16:10:01 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,199 +0,0 @@ -# Copyright (c) 1999-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: -# - -use Getopt::Long; -GetOptions("v", "x=s@"); - -if (@ARGV<2) - { -#........1.........2.........3.........4.........5.........6.........7..... - print < which contains the tree rooted at , -excluding all files listed in , and optionally -all files which match the specified Perl patterns. - -This is done with "zip zipfile -@", with the appropriately -filtered list of files supplied as standard input. - -USAGE_EOF - exit 1; - } - -my $zipfile = shift; -die "$zipfile already exists\n" if (-e $zipfile); - -#-------- -# Find the basic list of files -# - -my %filelist; -my $filecount = 0; -my $arg = shift; - -while ($arg ne "") - { - if (-d $arg) - { - add_dir($arg); - } - elsif (-e $arg) - { - add_file($arg); - } - else - { - print "Cannot find $arg - ignored\n"; - } - print "$filecount files after processing $arg\n"; - - $arg = shift; - next; - } - -#-------- -# Remove excluded files -# - -foreach $arg (@opt_x) - { - if (-e $arg) - { - exclude_zip($arg); - } - else - { - exclude_pattern($arg); - } - print "$filecount files after excluding $arg\n"; - $arg = shift; - } - -print "Invoking \"zip $zipfile -@\"\n"; - -open ZIPOUT, "| zip $zipfile -@"; -foreach $arg ( sort keys %filelist) - { - if ($filelist{$arg} ne "") - { - print ZIPOUT "$filelist{$arg}\n"; - } - } - -close ZIPOUT; -die "Problems creating zip file\n" if ($? != 0); - -exit 0; - - -#------------------------------------------------------------ - -sub add_file - { - my ($file) = @_; - my $key = lc $file; - - $key =~ s-/-\\-g; # convert / to \ for path separators - $key =~ s/^\\//; # remove leading \ since it won't appear in zip files - if ($filelist{$key} ne "") - { - die "Duplicate file $file\n"; - } - $filelist{$key} = $file; - $filecount += 1; - } - -sub exclude_file - { - my ($file) = @_; - my $key = lc $file; - - $key =~ s-/-\\-g; # convert / to \ for path separators - $key =~ s/^\\//; # remove leading \ since it won't appear in zip files - if ($filelist{$key} ne "") - { - delete $filelist{$key}; - $filecount -= 1; - } - } - -sub exclude_pattern - { - my ($pattern) = @_; - my $key; - - foreach $key (keys %filelist) - { - if ($key =~ /$pattern/i && $filelist{$key} ne "") - { - delete $filelist{$key}; - $filecount -= 1; - } - } - } - -sub add_dir - { - my ($dir) = @_; - opendir LISTDIR, $dir or print "Cannot read directory $dir\n" and return; - my @list = grep !/^\.\.?$/, readdir LISTDIR; - closedir LISTDIR; - - if ($opt_v) - { - print "Scanning $dir...\n"; - } - my $name; - foreach $name (@list) - { - my $filename = "$dir\\$name"; - if (-d $filename) - { - add_dir($filename); # recurse - } - else - { - add_file($filename); - } - } - } - -sub exclude_zip - { - my ($excludezip) = @_; - - die "$excludezip does not exist\n" if (!-e $excludezip); - print "Reading exclusions from $excludezip...\n"; - - my $line; - open ZIPEX, "unzip -l $excludezip |"; - while ($line=) - { - # 4492 10-12-99 17:31 epoc32/BLDMAKE/AGENDA/ARM4.MAKE - if ($line =~ /..-..-..\s+..:..\s+(.*)$/) - { - exclude_file($1); - } - } - close ZIPEX; - die "Problem reading $excludezip\n" if ($? != 0); - } - - - -