diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2010-01-31 07:28:06 -0800 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2010-01-31 07:28:06 -0800 |
commit | 2893f7b5ec6b2220ccfca6b9648482a6df926eca (patch) | |
tree | 420bcfd02120ee9398aee82a50ce297bd33a5e76 /ftparchive/writer.cc | |
parent | 4a3b5e9d609ad7c5437fa34c20f8404d07f8d11b (diff) |
* 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)
* cmdline/apt-get.cc:
- don't mark as manually if in download only (Closes: #468180)
Diffstat (limited to 'ftparchive/writer.cc')
-rw-r--r-- | ftparchive/writer.cc | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index b46152a9d..95b73a84d 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -559,7 +559,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'; @@ -650,12 +655,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 && @@ -700,12 +718,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()); |