summaryrefslogtreecommitdiff
path: root/apt-pkg/contrib/sha1.cc
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-02-08 15:33:23 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-02-08 15:33:23 +0000
commit8501516a89c1f333f7bc3866b05b5ce7fbf4e177 (patch)
tree023d64f1d1a53e9657e32e2a54664bf2beed9ede /apt-pkg/contrib/sha1.cc
parentd3fbe3fe7968190312c953ee7ba0c567be33ef09 (diff)
parent8a57929175a93466c83a8e697ad876b60b2eb3c2 (diff)
* merged with matt's tree
Patches applied: * apt@packages.debian.org/apt--main--0--patch-52 0.6.31 * apt@packages.debian.org/apt--main--0--patch-53 Remove debugging from apt.cron.daily * apt@packages.debian.org/apt--main--0--patch-54 allow SHA1Summation to process a file descriptor until EOF * apt@packages.debian.org/apt--main--0--patch-55 Fix syntax in sha1.cc * apt@packages.debian.org/apt--main--0--patch-56 Fix build/install of Polish offline documentation * apt@packages.debian.org/apt--main--0--patch-57 Move CD-ROM handling backend into libapt-pkg * apt@packages.debian.org/apt--main--0--patch-58 Fix compilation errors from apt--auth-cdrom--0 * michael.vogt@ubuntu.com--2005/apt--auth-cdrom--0--base-0 tag of apt@packages.debian.org/apt--main--0--patch-51 * michael.vogt@ubuntu.com--2005/apt--auth-cdrom--0--patch-1 * added support for signed cdroms * michael.vogt@ubuntu.com--2005/apt--auth-cdrom--0--patch-2 * merged with apt--main, seperated cmdline/apt-cdrom.cc into a library (apt-pkg/cdrom.{cc,h}) * michael.vogt@ubuntu.com--2005/apt--auth-cdrom--0--patch-3 * cleaned up the cmdline/apt-cdrom.cc code
Diffstat (limited to 'apt-pkg/contrib/sha1.cc')
-rw-r--r--apt-pkg/contrib/sha1.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/apt-pkg/contrib/sha1.cc b/apt-pkg/contrib/sha1.cc
index a22b4d2b2..9b402c523 100644
--- a/apt-pkg/contrib/sha1.cc
+++ b/apt-pkg/contrib/sha1.cc
@@ -343,11 +343,16 @@ bool SHA1Summation::AddFD(int Fd,unsigned long Size)
{
unsigned char Buf[64 * 64];
int Res = 0;
- while (Size != 0)
+ int ToEOF = (Size == 0);
+ while (Size != 0 || ToEOF)
{
- Res = read(Fd,Buf,MIN(Size,sizeof(Buf)));
- if (Res < 0 || (unsigned) Res != MIN(Size,sizeof(Buf)))
+ unsigned n = sizeof(Buf);
+ if (!ToEOF) n = MIN(Size,n);
+ Res = read(Fd,Buf,n);
+ if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read
return false;
+ if (ToEOF && Res == 0) // EOF
+ break;
Size -= Res;
Add(Buf,Res);
}