Przeglądaj źródła

Minor fixes for FTP support
Author: jgg
Date: 1999-03-15 08:10:39 GMT
Minor fixes for FTP support

Arch Librarian 22 lat temu
rodzic
commit
6d5dd02a49

+ 13 - 3
apt-pkg/acquire-method.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: acquire-method.cc,v 1.17 1999/02/08 07:30:49 jgg Exp $
+// $Id: acquire-method.cc,v 1.18 1999/03/15 08:10:39 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    Acquire Method
    Acquire Method
@@ -69,7 +69,16 @@ void pkgAcqMethod::Fail(bool Transient)
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* */
 /* */
 void pkgAcqMethod::Fail(string Err,bool Transient)
 void pkgAcqMethod::Fail(string Err,bool Transient)
-{   
+{
+   // Strip out junk from the error messages
+   for (char *I = Err.begin(); I != Err.end(); I++)
+   {
+      if (*I == '\r') 
+	 *I = ' ';
+      if (*I == '\n') 
+	 *I = ' ';
+   }
+   
    char S[1024];
    char S[1024];
    if (Queue != 0)
    if (Queue != 0)
    {
    {
@@ -271,7 +280,8 @@ bool pkgAcqMethod::Configuration(string Message)
       if (End == Equals)
       if (End == Equals)
 	 return false;
 	 return false;
       
       
-      Cnf.Set(string(I,Equals-I),string(Equals+1,End-Equals-1));
+      Cnf.Set(DeQuoteString(string(I,Equals-I)),
+	      DeQuoteString(string(Equals+1,End-Equals-1)));
       I = End;
       I = End;
    }
    }
    
    

+ 2 - 2
apt-pkg/acquire.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: acquire.cc,v 1.27 1999/03/13 23:30:04 jgg Exp $
+// $Id: acquire.cc,v 1.28 1999/03/15 08:10:39 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    Acquire - File Acquiration
    Acquire - File Acquiration
@@ -709,7 +709,7 @@ void pkgAcquireStatus::Pulse(pkgAcquire *Owner)
       else
       else
 	 CurrentCPS = (CurrentBytes - LastBytes)/Delta;
 	 CurrentCPS = (CurrentBytes - LastBytes)/Delta;
       LastBytes = CurrentBytes;
       LastBytes = CurrentBytes;
-      ElapsedTime = Delta;
+      ElapsedTime = (unsigned long)Delta;
       Time = NewTime;
       Time = NewTime;
    }
    }
 }
 }

+ 3 - 1
apt-pkg/contrib/configuration.h

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: configuration.h,v 1.9 1999/01/18 06:20:07 jgg Exp $
+// $Id: configuration.h,v 1.10 1999/03/15 08:10:39 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    Configuration Class
    Configuration Class
@@ -60,7 +60,9 @@ class Configuration
    string FindFile(const char *Name,const char *Default = 0);
    string FindFile(const char *Name,const char *Default = 0);
    string FindDir(const char *Name,const char *Default = 0);
    string FindDir(const char *Name,const char *Default = 0);
    int FindI(const char *Name,int Default = 0);
    int FindI(const char *Name,int Default = 0);
+   int FindI(string Name,bool Default = 0) {return FindI(Name.c_str(),Default);};
    bool FindB(const char *Name,bool Default = false);
    bool FindB(const char *Name,bool Default = false);
+   bool FindB(string Name,bool Default = false) {return FindB(Name.c_str(),Default);};
 	      
 	      
    inline void Set(string Name,string Value) {Set(Name.c_str(),Value);};
    inline void Set(string Name,string Value) {Set(Name.c_str(),Value);};
    void Set(const char *Name,string Value);
    void Set(const char *Name,string Value);

+ 19 - 4
apt-pkg/contrib/fileutl.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: fileutl.cc,v 1.21 1999/02/16 04:18:35 jgg Exp $
+// $Id: fileutl.cc,v 1.22 1999/03/15 08:10:39 jgg Exp $
 /* ######################################################################
 /* ######################################################################
    
    
    File Utilities
    File Utilities
@@ -164,15 +164,16 @@ void SetNonBlock(int Fd,bool Block)
 // WaitFd - Wait for a FD to become readable				/*{{{*/
 // WaitFd - Wait for a FD to become readable				/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* This waits for a FD to become readable using select. It is usefull for
 /* This waits for a FD to become readable using select. It is usefull for
-   applications making use of non-blocking sockets. */
+   applications making use of non-blocking sockets. The timeout is 
+   in seconds. */
 bool WaitFd(int Fd,bool write,unsigned long timeout)
 bool WaitFd(int Fd,bool write,unsigned long timeout)
 {
 {
    fd_set Set;
    fd_set Set;
    struct timeval tv;
    struct timeval tv;
    FD_ZERO(&Set);
    FD_ZERO(&Set);
    FD_SET(Fd,&Set);
    FD_SET(Fd,&Set);
-   tv.tv_sec = timeout / 1000000;
-   tv.tv_usec = timeout % 1000000;
+   tv.tv_sec = timeout;
+   tv.tv_usec = 0;
    if (write == true) 
    if (write == true) 
    {
    {
       if (select(Fd+1,0,&Set,0,(timeout != 0?&tv:0)) <= 0)
       if (select(Fd+1,0,&Set,0,(timeout != 0?&tv:0)) <= 0)
@@ -275,6 +276,20 @@ bool FileFd::Seek(unsigned long To)
       return _error->Error("Unable to seek to %u",To);
       return _error->Error("Unable to seek to %u",To);
    }
    }
    
    
+   return true;
+}
+									/*}}}*/
+// FileFd::Truncate - Truncate the file 				/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool FileFd::Truncate(unsigned long To)
+{
+   if (ftruncate(iFd,To) != 0)
+   {
+      Flags |= Fail;
+      return _error->Error("Unable to truncate to %u",To);
+   }
+   
    return true;
    return true;
 }
 }
 									/*}}}*/
 									/*}}}*/

+ 2 - 1
apt-pkg/contrib/fileutl.h

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: fileutl.h,v 1.14 1999/02/16 04:18:35 jgg Exp $
+// $Id: fileutl.h,v 1.15 1999/03/15 08:10:39 jgg Exp $
 /* ######################################################################
 /* ######################################################################
    
    
    File Utilities
    File Utilities
@@ -42,6 +42,7 @@ class FileFd
    bool Read(void *To,unsigned long Size);
    bool Read(void *To,unsigned long Size);
    bool Write(const void *From,unsigned long Size);
    bool Write(const void *From,unsigned long Size);
    bool Seek(unsigned long To);
    bool Seek(unsigned long To);
+   bool Truncate(unsigned long To);
    unsigned long Tell();
    unsigned long Tell();
    unsigned long Size();
    unsigned long Size();
    bool Close();
    bool Close();

+ 48 - 23
apt-pkg/contrib/strutl.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: strutl.cc,v 1.20 1999/02/27 22:29:11 jgg Exp $
+// $Id: strutl.cc,v 1.21 1999/03/15 08:10:39 jgg Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    String Util - Some usefull string functions.
    String Util - Some usefull string functions.
@@ -20,7 +20,7 @@
 #endif
 #endif
 
 
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/strutl.h>
-#include <apt-pkg/fileutl.h>
+#include <apt-pkg//fileutl.h>
 
 
 #include <ctype.h>
 #include <ctype.h>
 #include <string.h>
 #include <string.h>
@@ -178,23 +178,20 @@ bool ParseCWord(const char *String,string &Res)
    return true;
    return true;
 }
 }
 									/*}}}*/
 									/*}}}*/
-// DeQuoteString - Convert a string from quoted from			/*{{{*/
+// QuoteString - Convert a string into quoted from			/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
-/* This undoes QuoteString */
-string DeQuoteString(string Str)
+/* */
+string QuoteString(string Str,const char *Bad)
 {
 {
    string Res;
    string Res;
    for (string::iterator I = Str.begin(); I != Str.end(); I++)
    for (string::iterator I = Str.begin(); I != Str.end(); I++)
    {
    {
-      if (*I == '%' && I + 2 < Str.end())
+      if (strchr(Bad,*I) != 0 || isprint(*I) == 0 || 
+	  *I <= 0x20 || *I >= 0x7F)
       {
       {
-	 char Tmp[3];
-	 Tmp[0] = I[1];
-	 Tmp[1] = I[2];
-	 Tmp[2] = 0;
-	 Res += (char)strtol(Tmp,0,16);
-	 I += 2;
-	 continue;
+	 char Buf[10];
+	 sprintf(Buf,"%%%02x",(int)*I);
+	 Res += Buf;
       }
       }
       else
       else
 	 Res += *I;
 	 Res += *I;
@@ -202,27 +199,31 @@ string DeQuoteString(string Str)
    return Res;
    return Res;
 }
 }
 									/*}}}*/
 									/*}}}*/
-// QuoteString - Convert a string into quoted from			/*{{{*/
+// DeQuoteString - Convert a string from quoted from                    /*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
-/* */
-string QuoteString(string Str,const char *Bad)
+/* This undoes QuoteString */
+string DeQuoteString(string Str)
 {
 {
    string Res;
    string Res;
    for (string::iterator I = Str.begin(); I != Str.end(); I++)
    for (string::iterator I = Str.begin(); I != Str.end(); I++)
    {
    {
-      if (strchr(Bad,*I) != 0 || isprint(*I) == 0 || 
-	  *I <= 0x20 || *I >= 0x7F)
+      if (*I == '%' && I + 2 < Str.end())
       {
       {
-	 char Buf[10];
-	 sprintf(Buf,"%%%02x",(int)*I);
-	 Res += Buf;
+	 char Tmp[3];
+	 Tmp[0] = I[1];
+	 Tmp[1] = I[2];
+	 Tmp[2] = 0;
+	 Res += (char)strtol(Tmp,0,16);
+	 I += 2;
+	 continue;
       }
       }
       else
       else
 	 Res += *I;
 	 Res += *I;
    }
    }
-   return Res;
+   return Res;   
 }
 }
-									/*}}}*/
+
+                                                                        /*}}}*/
 // SizeToStr - Convert a long into a human readable size		/*{{{*/
 // SizeToStr - Convert a long into a human readable size		/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* A max of 4 digits are shown before conversion to the next highest unit. 
 /* A max of 4 digits are shown before conversion to the next highest unit. 
@@ -597,6 +598,30 @@ static int MonthConv(char *Month)
    }   
    }   
 }
 }
 									/*}}}*/
 									/*}}}*/
+// timegm - Internal timegm function if gnu is not available		/*{{{*/
+// ---------------------------------------------------------------------
+/* Ripped this evil little function from wget - I prefer the use of 
+   GNU timegm if possible as this technique will have interesting problems
+   with leap seconds, timezones and other.
+   
+   Converts struct tm to time_t, assuming the data in tm is UTC rather
+   than local timezone (mktime assumes the latter).
+   
+   Contributed by Roger Beeman <beeman@cisco.com>, with the help of
+   Mark Baushke <mdb@cisco.com> and the rest of the Gurus at CISCO. */
+#ifndef __USE_MISC        // glib sets this
+static time_t timegm(struct tm *t)
+{
+   time_t tl, tb;
+   
+   tl = mktime (t);
+   if (tl == -1)
+      return -1;
+   tb = mktime (gmtime (&tl));
+   return (tl <= tb ? (tl + (tl - tb)) : (tl - (tb - tl)));
+}
+#endif
+									/*}}}*/
 // StrToTime - Converts a string into a time_t				/*{{{*/
 // StrToTime - Converts a string into a time_t				/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* This handles all 3 populare time formats including RFC 1123, RFC 1036
 /* This handles all 3 populare time formats including RFC 1123, RFC 1036

+ 1 - 1
doc/apt-get.8.yo

@@ -66,7 +66,7 @@ list of locations from which to retrieve desired package files.
 dit(bf(install))
 dit(bf(install))
 bf(install) is followed by one or more em(packages) desired for installation. 
 bf(install) is followed by one or more em(packages) desired for installation. 
 Each em(package) is a package name, not a fully qualified filename 
 Each em(package) is a package name, not a fully qualified filename 
-(for instance, in a Debian GNU/Linux system, em(lsdo) would be the argument 
+(for instance, in a Debian GNU/Linux system, em(ldso) would be the argument 
 provided, not em(ldso_1.9.6-2.deb)). All packages required by the package(s) 
 provided, not em(ldso_1.9.6-2.deb)). All packages required by the package(s) 
 specified for installation will also be retrieved and installed. The
 specified for installation will also be retrieved and installed. The
 bf(/etc/apt/sources.list) file is used to locate the desired packages. If a
 bf(/etc/apt/sources.list) file is used to locate the desired packages. If a

+ 21 - 1
doc/examples/apt.conf

@@ -1,4 +1,4 @@
-// $Id: apt.conf,v 1.26 1999/03/02 21:19:06 jgg Exp $
+// $Id: apt.conf,v 1.27 1999/03/15 08:10:39 jgg Exp $
 /* This file is an index of all APT configuration directives. It should
 /* This file is an index of all APT configuration directives. It should
    NOT actually be used as a real config file, though it is a completely
    NOT actually be used as a real config file, though it is a completely
    valid file.
    valid file.
@@ -66,6 +66,26 @@ Acquire
     Max-Age "86400";     // 1 Day age on index files
     Max-Age "86400";     // 1 Day age on index files
     No-Store "false";    // Prevent the cache from storing archives    
     No-Store "false";    // Prevent the cache from storing archives    
   };
   };
+
+  ftp
+  {
+    Proxy "ftp://127.0.0.1/";
+    Proxy::http.us.debian.org "DIRECT"; // Specific per-host setting
+
+    // Required script to perform proxy login
+    ProxyLogin
+    {
+       "USER $(PROXY_USER)";
+       "PASS $(PROXY_PASS)";
+       "USER $(SITE_USER)@$(SITE):$(SITE_PORT)";
+       "PASS $(SITE_PASS)";
+    };
+    
+    Timeout "120";
+    Passive "true";
+    Proxy::Passive "true";
+    Passive::http.us.debian.org "true"; // Specific per-host setting       
+  };
   
   
   cdrom
   cdrom
   {
   {