summaryrefslogtreecommitdiff
path: root/apt-pkg/deb/debsrcrecords.cc
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2013-01-31 06:59:24 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2013-01-31 06:59:24 +0100
commit3bbce699ee1a5dbbe37806aee7afcc615ecc6ebe (patch)
treeca6cef37a97ec55f67968885f67971ee37663c9b /apt-pkg/deb/debsrcrecords.cc
parent30c54ac89ce01b93b42a9a37d3edd9837d0f34bb (diff)
cleanup the hash iteration. unfortunately there is no 1:1 mapping from Hashes::SupporedHashes to the tag name
Diffstat (limited to 'apt-pkg/deb/debsrcrecords.cc')
-rw-r--r--apt-pkg/deb/debsrcrecords.cc36
1 files changed, 15 insertions, 21 deletions
diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc
index c620c2298..37d38ee5b 100644
--- a/apt-pkg/deb/debsrcrecords.cc
+++ b/apt-pkg/deb/debsrcrecords.cc
@@ -116,28 +116,21 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
{
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;
@@ -160,9 +153,10 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
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());