X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/c1ebf56dc8f868da52baed255c0a64ccb88cedf3..9c2c9c24f7027a0299e545e55c38ac4c557359a5:/apt-pkg/contrib/sha1.cc diff --git a/apt-pkg/contrib/sha1.cc b/apt-pkg/contrib/sha1.cc index a22b4d2b2..eae52d52f 100644 --- a/apt-pkg/contrib/sha1.cc +++ b/apt-pkg/contrib/sha1.cc @@ -29,18 +29,14 @@ */ /*}}} */ // Include Files /*{{{*/ -#ifdef __GNUG__ -#pragma implementation "apt-pkg/sha1.h" -#endif - #include #include +#include #include #include #include #include -#include /*}}}*/ // SHA1Transform - Alters an existing SHA-1 hash /*{{{*/ @@ -343,11 +339,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,(unsigned long)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); }