]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/deb/debsrcrecords.cc
merged debian-sid branch and resolved conflicts
[apt.git] / apt-pkg / deb / debsrcrecords.cc
index 45cc0ae82200d0bcb5b370c160fa9d1b1143c862..f5fb2da4a843a54c4cee7c1d1b6bac733619d8d7 100644 (file)
@@ -116,23 +116,21 @@ bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List)
 {
    List.erase(List.begin(),List.end());
 
-   const char *hash_field[] = { "Checksums-Sha512", 
-                            "Checksums-Sha256",
-                            "Checksums-Sha1",
-                            "Files", // historic name
-                            NULL,
-   };
-   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;
 
@@ -155,9 +153,13 @@ 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();
+         // API compat hack 
+         if(SourceHashFields[i].second == "MD5Sum")
+            F.MD5Hash = RawHash;
          
          // Parse the size and append the directory
          F.Size = atoi(Size.c_str());