From 3bbce699ee1a5dbbe37806aee7afcc615ecc6ebe Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 31 Jan 2013 06:59:24 +0100 Subject: cleanup the hash iteration. unfortunately there is no 1:1 mapping from Hashes::SupporedHashes to the tag name --- apt-pkg/deb/debsrcrecords.cc | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) (limited to 'apt-pkg/deb/debsrcrecords.cc') 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 &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 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 &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()); -- cgit v1.2.3