Procházet zdrojové kódy

More SHA-1 prep
Author: jgg
Date: 2001-03-06 07:15:29 GMT
More SHA-1 prep

Arch Librarian před 22 roky
rodič
revize
63b1700fd9
12 změnil soubory, kde provedl 187 přidání a 64 odebrání
  1. 43 0
      apt-pkg/contrib/hashes.cc
  2. 41 0
      apt-pkg/contrib/hashes.h
  3. 3 3
      apt-pkg/init.h
  4. 5 4
      apt-pkg/makefile
  5. 1 0
      debian/changelog
  6. 9 9
      methods/ftp.cc
  7. 3 3
      methods/ftp.h
  8. 55 18
      methods/gzip.cc
  9. 13 13
      methods/http.cc
  10. 3 3
      methods/http.h
  11. 7 7
      methods/rsh.cc
  12. 4 4
      methods/rsh.h

+ 43 - 0
apt-pkg/contrib/hashes.cc

@@ -0,0 +1,43 @@
+// -*- mode: cpp; mode: fold -*-
+// Description								/*{{{*/
+// $Id: hashes.cc,v 1.1 2001/03/06 07:15:29 jgg Exp $
+/* ######################################################################
+
+   Hashes - Simple wrapper around the hash functions
+   
+   This is just used to make building the methods simpler, this is the
+   only interface required..
+   
+   ##################################################################### */
+									/*}}}*/
+// Include Files							/*{{{*/
+#ifdef __GNUG__
+#pragma implementation "apt-pkg/hashes.h"
+#endif
+
+#include <apt-pkg/hashes.h>
+    
+#include <unistd.h>    
+#include <system.h>    
+									/*}}}*/
+
+// Hashes::AddFD - Add the contents of the FD				/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool Hashes::AddFD(int Fd,unsigned long Size)
+{
+   unsigned char Buf[64*64];
+   int Res = 0;
+   while (Size != 0)
+   {
+      Res = read(Fd,Buf,MIN(Size,sizeof(Buf)));
+      if (Res < 0 || (unsigned)Res != MIN(Size,sizeof(Buf)))
+	 return false;
+      Size -= Res;
+      MD5.Add(Buf,Res);
+      SHA1.Add(Buf,Res);
+   }
+   return true;
+}
+									/*}}}*/
+

+ 41 - 0
apt-pkg/contrib/hashes.h

@@ -0,0 +1,41 @@
+// -*- mode: cpp; mode: fold -*-
+// Description								/*{{{*/
+// $Id: hashes.h,v 1.1 2001/03/06 07:15:29 jgg Exp $
+/* ######################################################################
+
+   Hashes - Simple wrapper around the hash functions
+   
+   This is just used to make building the methods simpler, this is the
+   only interface required..
+   
+   ##################################################################### */
+									/*}}}*/
+#ifndef APTPKG_HASHES_H
+#define APTPKG_HASHES_H
+
+#ifdef __GNUG__
+#pragma interface "apt-pkg/hashesh.h"
+#endif 
+
+#include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+
+class Hashes
+{
+   public:
+
+   MD5Summation MD5;
+   SHA1Summation SHA1;
+   
+   inline bool Add(const unsigned char *Data,unsigned long Size)
+   {
+      MD5.Add(Data,Size);
+      SHA1.Add(Data,Size);
+   };
+   inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));};
+   bool AddFD(int Fd,unsigned long Size);
+   inline bool Add(const unsigned char *Beg,const unsigned char *End) 
+                  {return Add(Beg,End-Beg);};
+};
+
+#endif

+ 3 - 3
apt-pkg/init.h

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: init.h,v 1.6 2001/03/03 23:02:39 tausq Exp $
+// $Id: init.h,v 1.7 2001/03/06 07:15:29 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    Init - Initialize the package library
    Init - Initialize the package library
@@ -19,8 +19,8 @@
 // See the makefile
 // See the makefile
 #define APT_PKG_MAJOR 3
 #define APT_PKG_MAJOR 3
 #define APT_PKG_MINOR 1
 #define APT_PKG_MINOR 1
-#define APT_PKG_RELEASE 2
-
+#define APT_PKG_RELEASE 3
+    
 extern const char *pkgVersion;
 extern const char *pkgVersion;
 extern const char *pkgLibVersion;
 extern const char *pkgLibVersion;
 extern const char *pkgOS;
 extern const char *pkgOS;

+ 5 - 4
apt-pkg/makefile

@@ -13,16 +13,17 @@ include ../buildlib/defaults.mak
 LIBRARY=apt-pkg
 LIBRARY=apt-pkg
 LIBEXT=$(GLIBC_VER)$(LIBSTDCPP_VER)
 LIBEXT=$(GLIBC_VER)$(LIBSTDCPP_VER)
 MAJOR=3.1
 MAJOR=3.1
-MINOR=2
+MINOR=3
 SLIBS=$(PTHREADLIB)
 SLIBS=$(PTHREADLIB)
 
 
 # Source code for the contributed non-core things
 # Source code for the contributed non-core things
 SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \
 SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \
          contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \
          contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \
-	 contrib/md5.cc contrib/cdromutl.cc contrib/crc-16.cc \
-	 contrib/fileutl.cc contrib/sha1.cc
+	 contrib/md5.cc contrib/sha1.cc contrib/hashes.cc \
+	 contrib/cdromutl.cc contrib/crc-16.cc \
+	 contrib/fileutl.cc 
 HEADERS = mmap.h error.h configuration.h fileutl.h  cmndline.h \
 HEADERS = mmap.h error.h configuration.h fileutl.h  cmndline.h \
-	  md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h
+	  md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h hashes.h
 
 
 # Source code for the core main library
 # Source code for the core main library
 SOURCE+= pkgcache.cc version.cc depcache.cc \
 SOURCE+= pkgcache.cc version.cc depcache.cc \

+ 1 - 0
debian/changelog

@@ -2,6 +2,7 @@ apt (0.5.3) unstable; urgency=low
 
 
   * JoeyH's dpkg::preconfig not working. Closes: #88675
   * JoeyH's dpkg::preconfig not working. Closes: #88675
   * Fixed apt override disparity
   * Fixed apt override disparity
+  * Alfredo's SHA-1 and related patches
   
   
  -- Jason Gunthorpe <jgg@debian.org>  Sun,  4 Mar 2001 15:39:43 -0700
  -- Jason Gunthorpe <jgg@debian.org>  Sun,  4 Mar 2001 15:39:43 -0700
 
 

+ 9 - 9
methods/ftp.cc

@@ -1,9 +1,9 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: ftp.cc,v 1.23 2001/02/23 07:19:49 jgg Exp $
+// $Id: ftp.cc,v 1.24 2001/03/06 07:15:29 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
-   HTTP Aquire Method - This is the FTP aquire method for APT.
+   FTP Aquire Method - This is the FTP aquire method for APT.
 
 
    This is a very simple implementation that does not try to optimize
    This is a very simple implementation that does not try to optimize
    at all. Commands are sent syncronously with the FTP server (as the
    at all. Commands are sent syncronously with the FTP server (as the
@@ -18,7 +18,7 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/error.h>
-#include <apt-pkg/md5.h>
+#include <apt-pkg/hashes.h>
 
 
 #include <sys/stat.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <sys/time.h>
@@ -825,7 +825,7 @@ bool FTPConn::Finalize()
 /* This opens a data connection, sends REST and RETR and then
 /* This opens a data connection, sends REST and RETR and then
    transfers the file over. */
    transfers the file over. */
 bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume,
 bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume,
-		  MD5Summation &MD5,bool &Missing)
+		  Hashes &Hash,bool &Missing)
 {
 {
    Missing = false;
    Missing = false;
    if (CreateDataFd() == false)
    if (CreateDataFd() == false)
@@ -849,7 +849,7 @@ bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume,
    
    
    if (Resume != 0)
    if (Resume != 0)
    {
    {
-      if (MD5.AddFD(To.Fd(),Resume) == false)
+      if (Hash.AddFD(To.Fd(),Resume) == false)
       {
       {
 	 _error->Errno("read","Problem hashing file");
 	 _error->Errno("read","Problem hashing file");
 	 return false;
 	 return false;
@@ -893,7 +893,7 @@ bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume,
 	 break;
 	 break;
       }
       }
    
    
-      MD5.Add(Buffer,Res);
+      Hash.Add(Buffer,Res);
       if (To.Write(Buffer,Res) == false)
       if (To.Write(Buffer,Res) == false)
       {
       {
 	 Close();
 	 Close();
@@ -1022,7 +1022,7 @@ bool FtpMethod::Fetch(FetchItem *Itm)
    }
    }
    
    
    // Open the file
    // Open the file
-   MD5Summation MD5;
+   Hashes Hash;
    {
    {
       FileFd Fd(Itm->DestFile,FileFd::WriteAny);
       FileFd Fd(Itm->DestFile,FileFd::WriteAny);
       if (_error->PendingError() == true)
       if (_error->PendingError() == true)
@@ -1035,7 +1035,7 @@ bool FtpMethod::Fetch(FetchItem *Itm)
       FailFd = Fd.Fd();
       FailFd = Fd.Fd();
       
       
       bool Missing;
       bool Missing;
-      if (Server->Get(File,Fd,Res.ResumePoint,MD5,Missing) == false)
+      if (Server->Get(File,Fd,Res.ResumePoint,Hash,Missing) == false)
       {
       {
 	 Fd.Close();
 	 Fd.Close();
 	 
 	 
@@ -1056,7 +1056,7 @@ bool FtpMethod::Fetch(FetchItem *Itm)
    }
    }
    
    
    Res.LastModified = FailTime;
    Res.LastModified = FailTime;
-   Res.MD5Sum = MD5.Result();
+   Res.MD5Sum = Hash.MD5.Result();
    
    
    // Timestamp
    // Timestamp
    struct utimbuf UBuf;
    struct utimbuf UBuf;

+ 3 - 3
methods/ftp.h

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
-// Description								/*{{{*/// $Id: ftp.h,v 1.3 2001/02/20 07:03:18 jgg Exp $
-// $Id: ftp.h,v 1.3 2001/02/20 07:03:18 jgg Exp $
+// Description								/*{{{*/// $Id: ftp.h,v 1.4 2001/03/06 07:15:29 jgg Exp $
+// $Id: ftp.h,v 1.4 2001/03/06 07:15:29 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    FTP Aquire Method - This is the FTP aquire method for APT.
    FTP Aquire Method - This is the FTP aquire method for APT.
@@ -56,7 +56,7 @@ class FTPConn
    bool Size(const char *Path,unsigned long &Size);
    bool Size(const char *Path,unsigned long &Size);
    bool ModTime(const char *Path, time_t &Time);
    bool ModTime(const char *Path, time_t &Time);
    bool Get(const char *Path,FileFd &To,unsigned long Resume,
    bool Get(const char *Path,FileFd &To,unsigned long Resume,
-	    MD5Summation &MD5,bool &Missing);
+	    Hashes &MD5,bool &Missing);
    
    
    FTPConn(URI Srv);
    FTPConn(URI Srv);
    ~FTPConn();
    ~FTPConn();

+ 55 - 18
methods/gzip.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: gzip.cc,v 1.11 2001/03/06 03:11:22 jgg Exp $
+// $Id: gzip.cc,v 1.12 2001/03/06 07:15:29 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    GZip method - Take a file URI in and decompress it into the target 
    GZip method - Take a file URI in and decompress it into the target 
@@ -13,11 +13,13 @@
 #include <apt-pkg/error.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/strutl.h>
+#include <apt-pkg/hashes.h>
 
 
 #include <sys/stat.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <unistd.h>
 #include <utime.h>
 #include <utime.h>
 #include <stdio.h>
 #include <stdio.h>
+#include <errno.h>
 									/*}}}*/
 									/*}}}*/
 
 
 class GzipMethod : public pkgAcqMethod
 class GzipMethod : public pkgAcqMethod
@@ -29,6 +31,7 @@ class GzipMethod : public pkgAcqMethod
    GzipMethod() : pkgAcqMethod("1.1",SingleInstance | SendConfig) {};
    GzipMethod() : pkgAcqMethod("1.1",SingleInstance | SendConfig) {};
 };
 };
 
 
+
 // GzipMethod::Fetch - Decompress the passed URI			/*{{{*/
 // GzipMethod::Fetch - Decompress the passed URI			/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* */
 /* */
@@ -36,45 +39,74 @@ bool GzipMethod::Fetch(FetchItem *Itm)
 {
 {
    URI Get = Itm->Uri;
    URI Get = Itm->Uri;
    string Path = Get.Host + Get.Path; // To account for relative paths
    string Path = Get.Host + Get.Path; // To account for relative paths
-   string GzipPath = _config->Find("Dir::bin::gzip","gzip");
    
    
    FetchResult Res;
    FetchResult Res;
    Res.Filename = Itm->DestFile;
    Res.Filename = Itm->DestFile;
    URIStart(Res);
    URIStart(Res);
    
    
-   // Open the source and destintation files
+   // Open the source and destination files
    FileFd From(Path,FileFd::ReadOnly);
    FileFd From(Path,FileFd::ReadOnly);
-   FileFd To(Itm->DestFile,FileFd::WriteEmpty);   
-   To.EraseOnFailure();
-   if (_error->PendingError() == true)
-      return false;
-   
+
+   int GzOut[2];   
+   if (pipe(GzOut) < 0)
+      return _error->Errno("pipe","Couldn't open pipe for gzip");
+
    // Fork gzip
    // Fork gzip
-   int Process = fork();
-   if (Process < 0)
-      return _error->Errno("fork",string("Couldn't fork "+GzipPath).c_str());
-   
-   // The child
+   int Process = ExecFork();
    if (Process == 0)
    if (Process == 0)
    {
    {
+      close(GzOut[0]);
       dup2(From.Fd(),STDIN_FILENO);
       dup2(From.Fd(),STDIN_FILENO);
-      dup2(To.Fd(),STDOUT_FILENO);
+      dup2(GzOut[1],STDOUT_FILENO);
       From.Close();
       From.Close();
-      To.Close();
+      close(GzOut[1]);
       SetCloseExec(STDIN_FILENO,false);
       SetCloseExec(STDIN_FILENO,false);
       SetCloseExec(STDOUT_FILENO,false);
       SetCloseExec(STDOUT_FILENO,false);
       
       
       const char *Args[3];
       const char *Args[3];
-      Args[0] = GzipPath.c_str();
+      Args[0] = _config->Find("Dir::bin::gzip","gzip").c_str();
       Args[1] = "-d";
       Args[1] = "-d";
       Args[2] = 0;
       Args[2] = 0;
       execvp(Args[0],(char **)Args);
       execvp(Args[0],(char **)Args);
-      exit(100);
+      _exit(100);
    }
    }
    From.Close();
    From.Close();
+   close(GzOut[1]);
+   
+   FileFd FromGz(GzOut[0]);  // For autoclose   
+   FileFd To(Itm->DestFile,FileFd::WriteEmpty);   
+   To.EraseOnFailure();
+   if (_error->PendingError() == true)
+      return false;
+   
+   // Read data from gzip, generate checksums and write
+   Hashes Hash;
+   bool Failed = false;
+   while (1) 
+   {
+      unsigned char Buffer[4*1024];
+      unsigned long Count;
+      
+      Count = read(GzOut[0],Buffer,sizeof(Buffer));
+      if (Count < 0 && errno == EINTR)
+	 continue;
+      
+      if (Count < 0)
+      {
+	 _error->Errno("read", "Read error from gzip process");
+	 Failed = true;
+	 break;
+      }
+      
+      if (Count == 0)
+	 break;
+      
+      Hash.Add(Buffer,Count);
+      To.Write(Buffer,Count);
+   }
    
    
    // Wait for gzip to finish
    // Wait for gzip to finish
-   if (ExecWait(Process,GzipPath.c_str(),false) == false)
+   if (ExecWait(Process,_config->Find("Dir::bin::gzip","gzip").c_str(),false) == false)
    {
    {
       To.OpFail();
       To.OpFail();
       return false;
       return false;
@@ -82,6 +114,9 @@ bool GzipMethod::Fetch(FetchItem *Itm)
        
        
    To.Close();
    To.Close();
    
    
+   if (Failed == true)
+      return false;
+   
    // Transfer the modification times
    // Transfer the modification times
    struct stat Buf;
    struct stat Buf;
    if (stat(Path.c_str(),&Buf) != 0)
    if (stat(Path.c_str(),&Buf) != 0)
@@ -99,6 +134,8 @@ bool GzipMethod::Fetch(FetchItem *Itm)
    // Return a Done response
    // Return a Done response
    Res.LastModified = Buf.st_mtime;
    Res.LastModified = Buf.st_mtime;
    Res.Size = Buf.st_size;
    Res.Size = Buf.st_size;
+   Res.MD5Sum = Hash.MD5.Result();
+
    URIDone(Res);
    URIDone(Res);
    
    
    return true;
    return true;

+ 13 - 13
methods/http.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: http.cc,v 1.49 2001/02/23 07:19:49 jgg Exp $
+// $Id: http.cc,v 1.50 2001/03/06 07:15:29 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    HTTP Aquire Method - This is the HTTP aquire method for APT.
    HTTP Aquire Method - This is the HTTP aquire method for APT.
@@ -28,7 +28,7 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/error.h>
 #include <apt-pkg/error.h>
-#include <apt-pkg/md5.h>
+#include <apt-pkg/hashes.h>
 
 
 #include <sys/stat.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <sys/time.h>
@@ -57,7 +57,7 @@ bool Debug = false;
 // CircleBuf::CircleBuf - Circular input buffer				/*{{{*/
 // CircleBuf::CircleBuf - Circular input buffer				/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* */
 /* */
-CircleBuf::CircleBuf(unsigned long Size) : Size(Size), MD5(0)
+CircleBuf::CircleBuf(unsigned long Size) : Size(Size), Hash(0)
 {
 {
    Buf = new unsigned char[Size];
    Buf = new unsigned char[Size];
    Reset();
    Reset();
@@ -73,10 +73,10 @@ void CircleBuf::Reset()
    StrPos = 0;
    StrPos = 0;
    MaxGet = (unsigned int)-1;
    MaxGet = (unsigned int)-1;
    OutQueue = string();
    OutQueue = string();
-   if (MD5 != 0)
+   if (Hash != 0)
    {
    {
-      delete MD5;
-      MD5 = new MD5Summation;
+      delete Hash;
+      Hash = new Hashes;
    }   
    }   
 };
 };
 									/*}}}*/
 									/*}}}*/
@@ -182,8 +182,8 @@ bool CircleBuf::Write(int Fd)
 	 return false;
 	 return false;
       }
       }
       
       
-      if (MD5 != 0)
-	 MD5->Add(Buf + (OutP%Size),Res);
+      if (Hash != 0)
+	 Hash->Add(Buf + (OutP%Size),Res);
       
       
       OutP += Res;
       OutP += Res;
    }
    }
@@ -892,14 +892,14 @@ int HttpMethod::DealWithHeaders(FetchResult &Res,ServerState *Srv)
    // Set the start point
    // Set the start point
    lseek(File->Fd(),0,SEEK_END);
    lseek(File->Fd(),0,SEEK_END);
 
 
-   delete Srv->In.MD5;
-   Srv->In.MD5 = new MD5Summation;
+   delete Srv->In.Hash;
+   Srv->In.Hash = new Hashes;
    
    
-   // Fill the MD5 Hash if the file is non-empty (resume)
+   // Fill the Hash if the file is non-empty (resume)
    if (Srv->StartPos > 0)
    if (Srv->StartPos > 0)
    {
    {
       lseek(File->Fd(),0,SEEK_SET);
       lseek(File->Fd(),0,SEEK_SET);
-      if (Srv->In.MD5->AddFD(File->Fd(),Srv->StartPos) == false)
+      if (Srv->In.Hash->AddFD(File->Fd(),Srv->StartPos) == false)
       {
       {
 	 _error->Errno("read","Problem hashing file");
 	 _error->Errno("read","Problem hashing file");
 	 return 5;
 	 return 5;
@@ -1109,7 +1109,7 @@ int HttpMethod::Loop()
 	    // Send status to APT
 	    // Send status to APT
 	    if (Result == true)
 	    if (Result == true)
 	    {
 	    {
-	       Res.MD5Sum = Server->In.MD5->Result();	       
+	       Res.MD5Sum = Server->In.Hash->MD5.Result();	       
 	       URIDone(Res);
 	       URIDone(Res);
 	    }
 	    }
 	    else
 	    else

+ 3 - 3
methods/http.h

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
-// Description								/*{{{*/// $Id: http.h,v 1.9 2001/02/20 07:03:18 jgg Exp $
-// $Id: http.h,v 1.9 2001/02/20 07:03:18 jgg Exp $
+// Description								/*{{{*/// $Id: http.h,v 1.10 2001/03/06 07:15:29 jgg Exp $
+// $Id: http.h,v 1.10 2001/03/06 07:15:29 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    HTTP Aquire Method - This is the HTTP aquire method for APT.
    HTTP Aquire Method - This is the HTTP aquire method for APT.
@@ -46,7 +46,7 @@ class CircleBuf
    
    
    public:
    public:
    
    
-   MD5Summation *MD5;
+   Hashes *Hash;
    
    
    // Read data in
    // Read data in
    bool Read(int Fd);
    bool Read(int Fd);

+ 7 - 7
methods/rsh.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: rsh.cc,v 1.2 2001/02/20 07:03:18 jgg Exp $
+// $Id: rsh.cc,v 1.3 2001/03/06 07:15:29 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    RSH method - Transfer files via rsh compatible program
    RSH method - Transfer files via rsh compatible program
@@ -271,7 +271,7 @@ bool RSHConn::ModTime(const char *Path, time_t &Time)
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* */
 /* */
 bool RSHConn::Get(const char *Path,FileFd &To,unsigned long Resume,
 bool RSHConn::Get(const char *Path,FileFd &To,unsigned long Resume,
-                  MD5Summation &MD5,bool &Missing, unsigned long Size)
+                  Hashes &Hash,bool &Missing, unsigned long Size)
 {
 {
    Missing = false;
    Missing = false;
 
 
@@ -284,7 +284,7 @@ bool RSHConn::Get(const char *Path,FileFd &To,unsigned long Resume,
       return false;
       return false;
 
 
    if (Resume != 0) {
    if (Resume != 0) {
-      if (MD5.AddFD(To.Fd(),Resume) == false) {
+      if (Hash.AddFD(To.Fd(),Resume) == false) {
 	 _error->Errno("read","Problem hashing file");
 	 _error->Errno("read","Problem hashing file");
 	 return false;
 	 return false;
       }
       }
@@ -323,7 +323,7 @@ bool RSHConn::Get(const char *Path,FileFd &To,unsigned long Resume,
       }
       }
       MyLen += Res;
       MyLen += Res;
 
 
-      MD5.Add(Buffer,Res);
+      Hash.Add(Buffer,Res);
       if (To.Write(Buffer,Res) == false)
       if (To.Write(Buffer,Res) == false)
       {
       {
          Close();
          Close();
@@ -428,7 +428,7 @@ bool RSHMethod::Fetch(FetchItem *Itm)
    }
    }
 
 
    // Open the file
    // Open the file
-   MD5Summation MD5;
+   Hashes Hash;
    {
    {
       FileFd Fd(Itm->DestFile,FileFd::WriteAny);
       FileFd Fd(Itm->DestFile,FileFd::WriteAny);
       if (_error->PendingError() == true)
       if (_error->PendingError() == true)
@@ -441,7 +441,7 @@ bool RSHMethod::Fetch(FetchItem *Itm)
       FailFd = Fd.Fd();
       FailFd = Fd.Fd();
 
 
       bool Missing;
       bool Missing;
-      if (Server->Get(File,Fd,Res.ResumePoint,MD5,Missing,Res.Size) == false)
+      if (Server->Get(File,Fd,Res.ResumePoint,Hash,Missing,Res.Size) == false)
       {
       {
 	 Fd.Close();
 	 Fd.Close();
 
 
@@ -462,7 +462,7 @@ bool RSHMethod::Fetch(FetchItem *Itm)
    }
    }
 
 
    Res.LastModified = FailTime;
    Res.LastModified = FailTime;
-   Res.MD5Sum = MD5.Result();
+   Res.MD5Sum = Hash.MD5.Result();
 
 
    // Timestamp
    // Timestamp
    struct utimbuf UBuf;
    struct utimbuf UBuf;

+ 4 - 4
methods/rsh.h

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
-// Description								/*{{{*/// $Id: rsh.h,v 1.2 2001/02/20 07:03:18 jgg Exp $
-// $Id: rsh.h,v 1.2 2001/02/20 07:03:18 jgg Exp $
+// Description								/*{{{*/// $Id: rsh.h,v 1.3 2001/03/06 07:15:29 jgg Exp $
+// $Id: rsh.h,v 1.3 2001/03/06 07:15:29 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    RSH method - Transfer files via rsh compatible program
    RSH method - Transfer files via rsh compatible program
@@ -12,7 +12,7 @@
 
 
 #include <string>
 #include <string>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/strutl.h>
-#include <apt-pkg/md5.h>
+#include <apt-pkg/hashes.h>
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/acquire-method.h>
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/fileutl.h>
 
 
@@ -44,7 +44,7 @@ class RSHConn
    bool Size(const char *Path,unsigned long &Size);
    bool Size(const char *Path,unsigned long &Size);
    bool ModTime(const char *Path, time_t &Time);
    bool ModTime(const char *Path, time_t &Time);
    bool Get(const char *Path,FileFd &To,unsigned long Resume,
    bool Get(const char *Path,FileFd &To,unsigned long Resume,
-            MD5Summation &MD5,bool &Missing, unsigned long Size);
+            Hashes &Hash,bool &Missing, unsigned long Size);
 
 
    RSHConn(URI Srv);
    RSHConn(URI Srv);
    ~RSHConn();
    ~RSHConn();