williamr/compare_7z_listings.pl
changeset 2 a600c1a596f7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/williamr/compare_7z_listings.pl	Mon Jun 01 15:26:59 2009 +0100
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+
+# Copyright (c) 2009 Symbian Foundation Ltd
+# This component and the accompanying materials are made available
+# under the terms of the License "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:
+# Symbian Foundation Ltd - initial contribution.
+# 
+# Contributors:
+#
+# Description:
+# Compare two 7z listings, looking for files present in both
+
+use strict;
+
+my %first_files;
+my $line;
+my $file_index = -1;
+
+while ($line=<>)
+  {
+  
+  if ($line =~ /^Listing archive/)
+    {
+    $file_index++;
+    print "$file_index: Processing $line";
+    next;
+    }
+
+  # 2009-04-30 11:26:58 D....            0            0  epoc32\cshlpcmp_template
+  # 2009-03-20 22:22:18 .....        72192        16307  epoc32\cshlpcmp_template\cshelp2000.dot
+  
+  next if (length($line) < 54);
+  
+  my $dir_attribute = substr($line, 20, 1);  
+  if ($dir_attribute eq ".")
+    {
+    chomp $line;
+    my $fullpath = substr($line, 53);
+    
+    if ($file_index == 0)
+      {
+      # first file
+      $first_files{$fullpath} = $line;
+      next;
+      }
+    if (defined $first_files{$fullpath})
+      {
+      print "Duplicate filename: $fullpath\n";
+      print "\t$first_files{$fullpath}\n\t$line\n";
+      next
+      }
+    }
+  }
+