Просмотр исходного кода

Almost done ftp
Author: jgg
Date: 1999-03-15 08:10:26 GMT
Almost done ftp

Arch Librarian лет назад: 22
Родитель
Сommit
10861bb506
1 измененных файлов с 26 добавлено и 25 удалено
  1. 26 25
      methods/ftp.cc

+ 26 - 25
methods/ftp.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: ftp.cc,v 1.2 1999/03/15 07:20:41 jgg Exp $
+// $Id: ftp.cc,v 1.3 1999/03/15 08:10:26 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    HTTP Aquire Method - This is the FTP aquire method for APT.
    HTTP Aquire Method - This is the FTP aquire method for APT.
@@ -212,17 +212,10 @@ bool FTPConn::Login()
 	 return _error->Error("PASS failed, server said: %s",Msg.c_str());
 	 return _error->Error("PASS failed, server said: %s",Msg.c_str());
       
       
       // Enter passive mode
       // Enter passive mode
-      TryPassive = false;
-      if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true &&
-	  _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true) == true)
-      {
-	 TryPassive = true;
-      }      
+      if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true)
+	 TryPassive = _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true);
       else
       else
-      {
-	 if (_config->FindB("Acquire::FTP::Passive",true) == true)
-	    TryPassive = true;
-      }      
+	 TryPassive = _config->FindB("Acquire::FTP::Passive",true);
    }
    }
    else
    else
    {      
    {      
@@ -250,7 +243,7 @@ bool FTPConn::Login()
 	 if (ServerName.Port != 0)
 	 if (ServerName.Port != 0)
 	    sprintf(SitePort,"%u",ServerName.Port);
 	    sprintf(SitePort,"%u",ServerName.Port);
 	 else
 	 else
-	    strcat("21",SitePort);
+	    strcpy(SitePort,"21");
 	 string Tmp = Opts->Value;
 	 string Tmp = Opts->Value;
 	 Tmp = SubstVar(Tmp,"$(PROXY_USER)",Proxy.User);
 	 Tmp = SubstVar(Tmp,"$(PROXY_USER)",Proxy.User);
 	 Tmp = SubstVar(Tmp,"$(PROXY_PASS)",Proxy.Password);
 	 Tmp = SubstVar(Tmp,"$(PROXY_PASS)",Proxy.Password);
@@ -268,19 +261,14 @@ bool FTPConn::Login()
       
       
       // Enter passive mode
       // Enter passive mode
       TryPassive = false;
       TryPassive = false;
-      if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true &&
-	  _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true) == true)
-      {
-	 TryPassive = true;
-      }      
+      if (_config->Exists("Acquire::FTP::Passive::" + ServerName.Host) == true)
+	 TryPassive = _config->FindB("Acquire::FTP::Passive::" + ServerName.Host,true);
       else
       else
       {
       {
-	 if (_config->Exists("Acquire::FTP::Proxy::Passive") == true &&
-	     _config->FindB("Acquire::FTP::Proxy::Passive",true) == true)
-	    TryPassive = true;
+	 if (_config->Exists("Acquire::FTP::Proxy::Passive") == true)
+	    TryPassive = _config->FindB("Acquire::FTP::Proxy::Passive",true);
 	 else
 	 else
-	    if (_config->FindB("Acquire::FTP::Passive",true) == true)
-	       TryPassive = true;	       
+	    TryPassive = _config->FindB("Acquire::FTP::Passive",true);
       }            
       }            
    }
    }
 
 
@@ -698,6 +686,18 @@ bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume,
    
    
    if (To.Truncate(Resume) == false)
    if (To.Truncate(Resume) == false)
       return false;
       return false;
+
+   if (To.Seek(0) == false)
+      return false;
+   
+   if (Resume != 0)
+   {
+      if (MD5.AddFD(To.Fd(),Resume) == false)
+      {
+	 _error->Errno("read","Problem hashing file");
+	 return false;
+      }
+   }
    
    
    // Send the get command
    // Send the get command
    if (WriteMsg(Tag,Msg,"RETR %s",Path) == false)
    if (WriteMsg(Tag,Msg,"RETR %s",Path) == false)
@@ -732,7 +732,8 @@ bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume,
 	    continue;
 	    continue;
 	 break;
 	 break;
       }
       }
-      
+   
+      MD5.Add(Buffer,Res);
       if (To.Write(Buffer,Res) == false)
       if (To.Write(Buffer,Res) == false)
 	 return false;
 	 return false;
    }
    }
@@ -795,7 +796,7 @@ bool FtpMethod::Configuration(string Message)
 									/*}}}*/
 									/*}}}*/
 // FtpMethod::Fetch - Fetch a file					/*{{{*/
 // FtpMethod::Fetch - Fetch a file					/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
-/* */
+/* Fetch a single file, called by the base class..  */
 bool FtpMethod::Fetch(FetchItem *Itm)
 bool FtpMethod::Fetch(FetchItem *Itm)
 {
 {
    URI Get = Itm->Uri;
    URI Get = Itm->Uri;
@@ -850,7 +851,7 @@ bool FtpMethod::Fetch(FetchItem *Itm)
       }
       }
       
       
       // Resume?
       // Resume?
-      if (FailTime == Buf.st_mtime && Size < (unsigned)Buf.st_size)
+      if (FailTime == Buf.st_mtime && Size > (unsigned)Buf.st_size)
 	 Res.ResumePoint = Buf.st_size;
 	 Res.ResumePoint = Buf.st_size;
    }
    }