]> git.saurik.com Git - apt.git/blobdiff - methods/ftp.h
Various fixes
[apt.git] / methods / ftp.h
index 1b2e147d0efb95bc728f1c9a6b85dda52c3df868..f791195b3e035f9983c178c9ef2542d9f86b6ea7 100644 (file)
@@ -1,5 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
-// Description                                                         /*{{{*/// $Id: ftp.h,v 1.1 1999/03/15 06:01:00 jgg Exp $
+// 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 $
 /* ######################################################################
 
    FTP Aquire Method - This is the FTP aquire method for APT.
@@ -17,11 +18,20 @@ class FTPConn
    int DataFd;
    int DataListenFd;
    URI ServerName;
+   bool ForceExtended;
    bool TryPassive;
-   
-   struct sockaddr_in PasvAddr;
-   struct sockaddr_in Peer;
+   bool Debug;
 
+   struct addrinfo *PasvAddr;
+   
+   // Generic Peer Address
+   struct sockaddr_storage PeerAddr;
+   socklen_t PeerAddrLen;
+   
+   // Generic Server Address (us)
+   struct sockaddr_storage ServerAddr;
+   socklen_t ServerAddrLen;
+   
    // Private helper functions
    bool ReadLine(string &Text);      
    bool Login();
@@ -30,22 +40,43 @@ class FTPConn
    
    public:
 
+   bool Comp(URI Other) {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;};
+   
    // Raw connection IO
    bool ReadResp(unsigned int &Ret,string &Text);
    bool WriteMsg(unsigned int &Ret,string &Text,const char *Fmt,...);
    
    // Connection control
-   bool Open();
+   bool Open(pkgAcqMethod *Owner);
    void Close();   
    bool GoPasv();
+   bool ExtGoPasv();
    
    // Query
-   unsigned long Size(const char *Path);
+   bool Size(const char *Path,unsigned long &Size);
    bool ModTime(const char *Path, time_t &Time);
-   bool Get(const char *Path,FileFd &To,unsigned long Resume = 0);
+   bool Get(const char *Path,FileFd &To,unsigned long Resume,
+           MD5Summation &MD5,bool &Missing);
    
    FTPConn(URI Srv);
    ~FTPConn();
 };
 
+class FtpMethod : public pkgAcqMethod
+{
+   virtual bool Fetch(FetchItem *Itm);
+   virtual bool Configuration(string Message);
+   
+   FTPConn *Server;
+   
+   static string FailFile;
+   static int FailFd;
+   static time_t FailTime;
+   static void SigTerm(int);
+   
+   public:
+   
+   FtpMethod();
+};
+
 #endif