]> git.saurik.com Git - apt.git/commitdiff
* ftparchive/writer.cc:
authorDavid Kalnischkies <kalnischkies@gmail.com>
Sat, 30 Jan 2010 22:57:27 +0000 (23:57 +0100)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Sat, 30 Jan 2010 22:57:27 +0000 (23:57 +0100)
  - generate sha1 and sha256 checksums for dsc (Closes: #567343)

debian/changelog
ftparchive/writer.cc

index d791eb5a0207a7ada4826933e39e940f3be27d8e..57c9c1f7b2114c027847bc20da960cd802961b37 100644 (file)
@@ -28,6 +28,8 @@ apt (0.7.25.3) UNRELEASED; urgency=low
   * cmdline/acqprogress.cc:
     - Set Mode to Medium so that the correct prefix is used.
       Thanks Stefan Haller for the patch! (Closes: #567304 LP: #275243)
+  * ftparchive/writer.cc:
+    - generate sha1 and sha256 checksums for dsc (Closes: #567343)
 
  -- David Kalnischkies <kalnischkies@gmail.com>  Sat, 30 Jan 2010 22:13:48 +0100
 
index 5547c6aa5175faa3312f4dcf72461b872d1fa3f3..b9dd554b3fa4ba97eb321823c3e446dc7e4a37a4 100644 (file)
@@ -555,7 +555,12 @@ bool SourcesWriter::DoPackage(string FileName)
    char *BlkEnd = Buffer + St.st_size;
    MD5Summation MD5;
    MD5.Add((unsigned char *)Start,BlkEnd - Start);
-      
+
+   SHA1Summation SHA1;
+   SHA256Summation SHA256;
+   SHA1.Add((unsigned char *)Start,BlkEnd - Start);
+   SHA256.Add((unsigned char *)Start,BlkEnd - Start);
+
    // Add an extra \n to the end, just in case
    *BlkEnd++ = '\n';
    
@@ -646,12 +651,25 @@ bool SourcesWriter::DoPackage(string FileName)
    }
    
    // Add the dsc to the files hash list
+   string const strippedName = flNotDir(FileName);
    char Files[1000];
    snprintf(Files,sizeof(Files),"\n %s %lu %s\n %s",
            string(MD5.Result()).c_str(),St.st_size,
-           flNotDir(FileName).c_str(),
+           strippedName.c_str(),
            Tags.FindS("Files").c_str());
-   
+
+   char ChecksumsSha1[1000];
+   snprintf(ChecksumsSha1,sizeof(ChecksumsSha1),"\n %s %lu %s\n %s",
+           string(SHA1.Result()).c_str(),St.st_size,
+           strippedName.c_str(),
+           Tags.FindS("Checksums-Sha1").c_str());
+
+   char ChecksumsSha256[1000];
+   snprintf(ChecksumsSha256,sizeof(ChecksumsSha256),"\n %s %lu %s\n %s",
+           string(SHA256.Result()).c_str(),St.st_size,
+           strippedName.c_str(),
+           Tags.FindS("Checksums-Sha256").c_str());
+
    // Strip the DirStrip prefix from the FileName and add the PathPrefix
    string NewFileName;
    if (DirStrip.empty() == false &&
@@ -694,12 +712,14 @@ bool SourcesWriter::DoPackage(string FileName)
       Directory.erase(Directory.end()-1);
 
    // This lists all the changes to the fields we are going to make.
-   // (5 hardcoded + maintainer + end marker)
-   TFRewriteData Changes[5+1+SOverItem->FieldOverride.size()+1];
+   // (5 hardcoded + checksums + maintainer + end marker)
+   TFRewriteData Changes[5+2+1+SOverItem->FieldOverride.size()+1];
 
    unsigned int End = 0;
    SetTFRewriteData(Changes[End++],"Source",Package.c_str(),"Package");
    SetTFRewriteData(Changes[End++],"Files",Files);
+   SetTFRewriteData(Changes[End++],"Checksums-Sha1",ChecksumsSha1);
+   SetTFRewriteData(Changes[End++],"Checksums-Sha256",ChecksumsSha256);
    if (Directory != "./")
       SetTFRewriteData(Changes[End++],"Directory",Directory.c_str());
    SetTFRewriteData(Changes[End++],"Priority",BestPrio.c_str());