- initial import of revision 374 from cnc
[apt.git] / apt-pkg / contrib / hashes.cc
1 // -*- mode: cpp; mode: fold -*-
2 // Description                                                          /*{{{*/
3 // $Id: hashes.cc,v 1.1 2002/07/23 17:54:51 niemeyer Exp $
4 /* ######################################################################
5
6    Hashes - Simple wrapper around the hash functions
7    
8    This is just used to make building the methods simpler, this is the
9    only interface required..
10    
11    ##################################################################### */
12                                                                         /*}}}*/
13 // Include Files                                                        /*{{{*/
14 #ifdef __GNUG__
15 #pragma implementation "apt-pkg/hashes.h"
16 #endif
17
18 #include <apt-pkg/hashes.h>
19     
20 #include <unistd.h>    
21 #include <system.h>    
22                                                                         /*}}}*/
23
24 // Hashes::AddFD - Add the contents of the FD                           /*{{{*/
25 // ---------------------------------------------------------------------
26 /* */
27 bool Hashes::AddFD(int Fd,unsigned long Size)
28 {
29    unsigned char Buf[64*64];
30    int Res = 0;
31    while (Size != 0)
32    {
33       Res = read(Fd,Buf,MIN(Size,sizeof(Buf)));
34       if (Res < 0 || (unsigned)Res != MIN(Size,sizeof(Buf)))
35          return false;
36       Size -= Res;
37       MD5.Add(Buf,Res);
38       SHA1.Add(Buf,Res);
39    }
40    return true;
41 }
42                                                                         /*}}}*/
43