diff -r 10e98eab6f85 -r a359256acfc6 webengine/osswebengine/cache/cache_check.pl --- /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