return dir;
}
-// copied from http.cc
-QString ThreadAccess::getCachePath( const KURL& url )
+QString ThreadAccess::cacheSubDir( const QString& host )
{
- const QChar seperator = '_';
-
- QString path = url.path();
- path.replace( QChar( '/' ), QChar( '_' ) );
-
- QString host = url.host().lower();
- QString CEF = host + path + '_';
-
- QString dir = cacheDir( url );
-
int l = host.length();
for ( int i = 0; i < l; i++ ) {
if ( host[ i ].isLetter() && ( host[ i ] != 'w' ) ) {
- dir += host[ i ];
- break;
+ return QString( host[ i ] );
}
}
- if ( dir[ dir.length() - 1 ] == '/' )
- dir += "0";
+ return "0";
+}
+QString ThreadAccess::hashString( const KURL& url )
+{
unsigned long hash = 0x00000000;
QCString u = url.url().latin1();
for ( int i = u.length(); i--; ) {
hash = ( hash * 12211 + u[ i ] ) % 2147483563;
}
- QString hashString;
- hashString.sprintf( "%08lx", hash );
+ QString ret;
+ ret.sprintf( "%08lx", hash );
- CEF = CEF + hashString;
+ return ret;
+}
+
+// copied from http.cc
+QString ThreadAccess::getCachePath( const KURL& url )
+{
+ QString path = url.path();
+ path.replace( QChar( '/' ), QChar( '_' ) );
- CEF = dir + "/" + CEF;
+ QString host = url.host().lower();
- return CEF;
+ return cacheDir( url ) + cacheSubDir( host ) + "/" + host + path + '_' + hashString( url );
}
bool ThreadAccess::readCacheHeader( FILE* fs, const KURL& url )