return Hash % _count(HeaderP->HashTable);
}
+unsigned long pkgCache::sHash(const srkString &Str) const
+{
+ unsigned long Hash = 0;
+ for (const char *I = Str.Start, *E = I + Str.Size; I != E; I++)
+ Hash = 5*Hash + tolower_ascii(*I);
+ return Hash % _count(HeaderP->HashTable);
+}
+
/*}}}*/
// Cache::FindPkg - Locate a package by name /*{{{*/
// ---------------------------------------------------------------------
/* Returns 0 on error, pointer to the package otherwise */
pkgCache::PkgIterator pkgCache::FindPkg(const string &Name)
+{
+ return FindPkg(srkString(Name));
+}
+
+pkgCache::PkgIterator pkgCache::FindPkg(const srkString &Name)
{
// Look at the hash bucket
Package *Pkg = PkgP + HeaderP->HashTable[Hash(Name)];
for (; Pkg != PkgP; Pkg = PkgP + Pkg->NextPackage)
{
- if (Pkg->Name != 0 && StrP[Pkg->Name] == Name[0] &&
+ if (Pkg->Name != 0 &&
stringcasecmp(Name,StrP + Pkg->Name) == 0)
return PkgIterator(*this,Pkg);
}