]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/strutl.cc
be sure that the RFC1123StrToTime method is run in a LANG=C environment
[apt.git] / apt-pkg / contrib / strutl.cc
index 160450366880d0457166aeab4547c3714d043397..ace74cb37a6efc23c6798a3ebeda6ddb90790aa0 100644 (file)
@@ -861,12 +861,16 @@ static time_t timegm(struct tm *t)
 bool RFC1123StrToTime(const char* const str,time_t &time)
 {
    struct tm Tm;
+   setlocale (LC_ALL,"C");
+   bool const invalid =
    // Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
-   if (strptime(str, "%a, %d %b %Y %H:%M:%S %Z", &Tm) == NULL &&
+      (strptime(str, "%a, %d %b %Y %H:%M:%S %Z", &Tm) == NULL &&
    // Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
        strptime(str, "%A, %d-%b-%y %H:%M:%S %Z", &Tm) == NULL &&
    // Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
-       strptime(str, "%a %b %d %H:%M:%S %Y", &Tm) == NULL)
+       strptime(str, "%a %b %d %H:%M:%S %Y", &Tm) == NULL);
+   setlocale (LC_ALL,"");
+   if (invalid == true)
       return false;
 
    time = timegm(&Tm);