diff options
author | Arch Librarian <arch@canonical.com> | 2004-09-20 17:04:32 +0000 |
---|---|---|
committer | Arch Librarian <arch@canonical.com> | 2004-09-20 17:04:32 +0000 |
commit | f7291f6215c1e52298d47438c297c3c319abca7e (patch) | |
tree | d65d7ac6acee7531ed7bdb7286fc3d46f1f881c3 /ftparchive/writer.cc | |
parent | bbb55c6af6f691f2f4064ca472a40f8486ac8ca3 (diff) |
Add SHA1 support to "apt-ftparchive release"
Author: mdz
Date: 2003-12-26 20:50:01 GMT
Add SHA1 support to "apt-ftparchive release"
Diffstat (limited to 'ftparchive/writer.cc')
-rw-r--r-- | ftparchive/writer.cc | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index 68fd85091..3b1cb69f5 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: writer.cc,v 1.8 2003/12/26 20:08:56 mdz Exp $ +// $Id: writer.cc,v 1.9 2003/12/26 20:50:01 mdz Exp $ /* ###################################################################### Writer @@ -22,6 +22,7 @@ #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> #include <apt-pkg/md5.h> +#include <apt-pkg/sha1.h> #include <apt-pkg/deblistparser.h> #include <sys/types.h> @@ -829,8 +830,6 @@ ReleaseWriter::ReleaseWriter(string DB) fprintf(Output, "%s: %s\n", (*I).first.c_str(), Value.c_str()); } - - fprintf(Output, "MD5Sum:\n"); } /*}}}*/ // ReleaseWriter::DoPackage - Process a single package /*{{{*/ @@ -856,14 +855,47 @@ bool ReleaseWriter::DoPackage(string FileName) return false; } + CheckSums[FileName].size = fd.Size(); + MD5Summation MD5; MD5.AddFD(fd.Fd(), fd.Size()); + CheckSums[FileName].MD5 = MD5.Result(); - string MD5Sum = MD5.Result(); - fprintf(Output, " %s %16d %s\n", - MD5Sum.c_str(), fd.Size(), FileName.c_str()); + fd.Seek(0); + SHA1Summation SHA1; + SHA1.AddFD(fd.Fd(), fd.Size()); + CheckSums[FileName].SHA1 = SHA1.Result(); fd.Close(); return true; } + + /*}}}*/ +// ReleaseWriter::Finish - Output the checksums /*{{{*/ +// --------------------------------------------------------------------- +void ReleaseWriter::Finish() +{ + fprintf(Output, "MD5Sum:\n"); + for(map<string,struct CheckSum>::iterator I = CheckSums.begin(); + I != CheckSums.end(); + ++I) + { + fprintf(Output, " %s %16ld %s\n", + (*I).second.MD5.c_str(), + (*I).second.size, + (*I).first.c_str()); + } + + fprintf(Output, "SHA1:\n"); + for(map<string,struct CheckSum>::iterator I = CheckSums.begin(); + I != CheckSums.end(); + ++I) + { + fprintf(Output, " %s %16ld %s\n", + (*I).second.SHA1.c_str(), + (*I).second.size, + (*I).first.c_str()); + } +} + |