diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2005-02-08 15:33:23 +0000 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2005-02-08 15:33:23 +0000 |
commit | 8501516a89c1f333f7bc3866b05b5ce7fbf4e177 (patch) | |
tree | 023d64f1d1a53e9657e32e2a54664bf2beed9ede /apt-pkg/contrib/sha1.cc | |
parent | d3fbe3fe7968190312c953ee7ba0c567be33ef09 (diff) | |
parent | 8a57929175a93466c83a8e697ad876b60b2eb3c2 (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.cc | 11 |
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); } |