--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/cache/cache_check.pl Thu Aug 27 07:44:59 2009 +0300
@@ -0,0 +1,181 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# 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:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+#!/usr/bin/perl
+
+#use Encode;
+
+# open index file
+open INH,'<','\epoc32\winscw\c\system\cache\index.dat' or die "couldn't open index.dat";
+binmode INH;
+
+my @missing_files;
+my @missing_urls;
+
+my @cache_uris;
+my @cache_files;
+
+my @dir_items = GetDirContents();
+my @cache_content = ParseCacheIndex();
+my @extra_files;
+GetExtraFiles();
+
+$count = 0;
+print "\n\nMissing Items:\n";
+foreach (@missing_files) {
+ print "$_ - $missing_urls[$count++]\n";
+}
+
+print "\n\nExtra Files:\n";
+foreach (@extra_files) {
+ print "$_\n";
+}
+
+
+
+
+sub GetDirContents
+{
+ my @subdirectories = ( "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" );
+ my @diritems = ();
+ $index=0;
+ foreach (@subdirectories)
+ {
+ opendir DIRHANDLE,"\\epoc32\\winscw\\c\\system\\cache\\@subdirectories[$index++]" or die "couldn't open cache directory";
+ my @tmp = readdir DIRHANDLE;
+ push @diritems, @tmp;
+ }
+
+ return @diritems;
+}
+
+sub ParseCacheIndex
+{
+ $filenames;
+ $numEntries = GetNumEntries();
+
+ print "Index contains $numEntries items\n";
+
+ while($numEntries)
+ {
+ @urifilenamearray = GetNextFilename();
+ print "@urifilenamearray[1] - @urifilenamearray[0]\n";
+ push @filenames, @urifilenamearray[0];
+ push @filenames, @urifilenamearray[1];
+ $numEntries--;
+ CheckFilePresent(@urifilenamearray[1], @urifilenamearray[0]);
+ push @cache_files, @urifilenamearray[1];
+ push @cache_urls, @urifilenamearray[0];
+ }
+
+ return @filenames;
+}
+
+sub GetNumEntries
+{
+ read (INH, $buffer, 4); #throw away version number
+ read (INH, $buffer, 4); # read num of 16-bit chars in dir stub
+ $charcount = unpack("l",$buffer);
+ read (INH, $buffer, $charcount*2); #throw away dir stub
+ read (INH, $buffer, 4); # read entry count
+ $value = unpack("l",$buffer);
+ return $value;
+}
+
+sub GetNextFilename
+{
+ my @return = ();
+
+ read (INH, $buffer, 4);
+ # get URI
+ $stringlen = unpack("l",$buffer);
+ read (INH, $buffer, $stringlen);
+
+ @return[0] = $buffer;
+# print "$stringlen chars in URI:\n$buffer\n";
+
+ # get unicode filename
+# read (INH, $buffer, 4);
+# $stringlen = unpack("l", $buffer);
+
+ $stringlen = 8;
+ my @filename_array = ();
+ if($stringlen)
+ {
+ # convert $buffer from unicode to ascii
+ while($stringlen) {
+ read (INH, $buffer, 2);
+ $string = unpack("a",$buffer);
+ #print "$string";
+ push @filename_array, $string;
+ $stringlen--;
+ }
+ }
+ @return[1] = join '',@filename_array;
+ #print "\n\n";
+ # gobble rest of item up to header data
+ read (INH, $buffer, 24);
+
+ read (INH, $buffer, 4);
+ $stringlen = unpack("l",$buffer);
+ read (INH, $buffer, $stringlen); # throw away header data.
+
+ return @return;
+}
+
+sub CheckFilePresent()
+{
+ my $filename = $_[0];
+ my $url = $_[1];
+
+ my $fqname = "\\epoc32\\winscw\\c\\system\\cache\\". (substr $filename, -1, 1) . "\\" . $filename;
+
+ my $FILE;
+ open FILE, $fqname or MissingItem($filename, $url);
+}
+
+sub MissingItem()
+{
+ push @missing_files, $_[0];
+ push @missing_urls, $_[1];
+}
+
+sub GetExtraFiles()
+{
+ # dir_items contains list of all filenames in all directories.
+ my $dirnum = -1;
+ my @dirnames = ( "0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f" );
+
+ foreach $item (@dir_items)
+ {
+ my $match = 0;
+ if($item eq '.')
+ {
+ $dirnum++;
+ }
+ elsif($item ne '..') # filter out directories
+ {
+ foreach (@cache_files)
+ {
+ $match = 1 if($_ eq $item);
+ }
+ if($match == 0)
+ {
+ my $fqname = "\\epoc32\\winscw\\c\\system\\cache\\".@dirnames[$dirnum]."\\".$item;
+ push @extra_files, $fqname;
+ }
+ }
+ }
+}
\ No newline at end of file