{
List.erase(List.begin(),List.end());
- // FIXME: build string dynamically from
- // Hashes::SupportedHashes
- const char *hash_field[] = { "Checksums-Sha512",
- "Checksums-Sha256",
- "Checksums-Sha1",
- "Files", // historic name
- NULL,
- };
-
- // FIXME: use string from Hashes::SupportedHashes
- // FIXME2: this is case senstivie
- const char *hash_type[] = { "SHA512",
- "SHA256",
- "SHA1",
- "MD5Sum",
- NULL,
+ // map from the Hashsum field to the hashsum function,
+ // unfortunately this is not a 1:1 mapping from
+ // Hashes::SupporedHashes as e.g. Files is a historic name for the md5
+ const std::pair<const char*, const char*> SourceHashFields[] = {
+ std::make_pair( "Checksums-Sha512", "SHA512"),
+ std::make_pair( "Checksums-Sha256", "SHA256"),
+ std::make_pair( "Checksums-Sha1", "SHA1"),
+ std::make_pair( "Files", "MD5Sum"), // historic Name
};
- for (int i=0; hash_field[i] != NULL; i++)
+ for (unsigned int i=0;
+ i < sizeof(SourceHashFields)/sizeof(SourceHashFields[0]);
+ i++)
{
-
- string Files = Sect.FindS(hash_field[i]);
+ string Files = Sect.FindS(SourceHashFields[i].first);
if (Files.empty() == true)
continue;
if (ParseQuoteWord(C, RawHash) == false ||
ParseQuoteWord(C, Size) == false ||
ParseQuoteWord(C, F.Path) == false)
- return _error->Error("Error parsing '%s' record", hash_field[i]);
+ return _error->Error("Error parsing '%s' record",
+ SourceHashFields[i].first);
// assign full hash string
- F.Hash = HashString(hash_type[i], RawHash).toStr();
+ F.Hash = HashString(SourceHashFields[i].second, RawHash).toStr();
// Parse the size and append the directory
F.Size = atoi(Size.c_str());