You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ma...@arcor.de on 2003/12/08 08:44:04 UTC

Aw: FW: [NET] [PATCH] DefaultFTPFileListParser: ftp servers returning german date format

Oops, looks like ezmlm/qmail has stripped the file off.
Here's the patch-file as inline-text:

------------- cut ------------------
--- DefaultFTPFileListParser.java	Mon Dec 08 08:23:36 2003
+++ DefaultFTPFileListParser.java_joerg	Mon Dec 08 08:21:47 2003
@@ -137,6 +137,31 @@
         return start;
     }
 
+      protected int __parseMonth(char[] cToken, int start)
+      {
+         String aasMonths[][] = {
+            // english month names
+            { "jan", "feb", "mar", "apr", "may", "jun", 
+              "jul", "aug", "sep", "oct","nov", "dec" },
+            // german month names
+            {"jan", "feb", "mär", "apr", "mai", "jun", 
+             "jul", "aug", "sep", "okt","nov", "dez" }};
+         
+         for (int iLangIdx = 0; iLangIdx < aasMonths.length; iLangIdx++)
+         {
+            for (int iMonthIdx = 0; iMonthIdx < aasMonths[iLangIdx].length; iMonthIdx++)
+            {
+               if ((aasMonths[iLangIdx][iMonthIdx].charAt(0) == cToken[start]) &&
+                   (aasMonths[iLangIdx][iMonthIdx].charAt(1) == cToken[start+1]) &&
+                   (aasMonths[iLangIdx][iMonthIdx].charAt(2) == cToken[start+2]))
+               {
+                  return(iMonthIdx+1);
+               }
+            }
+         }
+         return(0);
+      }
+
 
     /***
      * Parses an FTP server listing entry (a single line) and returns an
@@ -223,55 +248,33 @@
             }
 
             start = __skipWhitespace(cToken, end);
-            end = __skipNonWhitespaceToLower(cToken, start);
 
-            // Get month
-            switch (cToken[start])
+            if (Character.isDigit(cToken[start]))
             {
-            case 'a':
-                if (cToken[end - 1] == 'r')
-                    month = 3;
-                else
-                    month = 7;
-                break;
-            case 'd':
-                month = 11;
-                break;
-            case 'f':
-                month = 1;
-                break;
-            case 'j':
-                if (cToken[end - 1] == 'l')
-                    month = 6;
-                else if (cToken[start + 1] == 'a')
-                    month = 0;
-                else
-                    month = 5;
-                break;
-            case 'm':
-                if (cToken[end - 1] == 'y')
-                    month = 4;
-                else
-                    month = 2;
-                break;
-            case 'n':
-                month = 10;
-                break;
-            case 'o':
-                month = 9;
-                break;
-            case 's':
-                month = 8;
-                break;
-            default:
-                month = 0;
-                break;
+               /* this is a digit => must be "day moth" order  */
+               
+               // Get day, and store in access
+               end = __skipDigits(cToken, start);
+               access = __charArrayToInt(cToken, start, end);
+
+               // get the month
+               start = __skipWhitespace(cToken, end);
+               end = __skipNonWhitespaceToLower(cToken, start);
+               month =  __parseMonth(cToken, start);
+            }
+            else
+            {
+               /* must be "moth day" order  */
+               
+               // get the month
+               end = __skipNonWhitespaceToLower(cToken, start);
+               month =  __parseMonth(cToken, start);
+
+               // Get day, and store in access
+               start = __skipWhitespace(cToken, end);
+               end = __skipDigits(cToken, start);
+               access = __charArrayToInt(cToken, start, end);
             }
-
-            // Get day, and store in access
-            start = __skipWhitespace(cToken, end);
-            end = __skipDigits(cToken, start);
-            access = __charArrayToInt(cToken, start, end);
 
             start = __skipWhitespace(cToken, end);
             end = __skipDigits(cToken, start);
------------- cut ------------------

Joerg



> 
> 
> -----Original Message-----
> From: Daniel F. Savarese [mailto:dfs@savarese.org]
> Sent: Freitag, 5. Dezember 2003 21:59
> To: commons-dev@jakarta.apache.org
> Cc: J.Matysiak@CENIT.DE
> Subject: Re: [NET] [PATCH] DefaultFTPFileListParser: ftp servers
> returning ger man date format
> 
> 
> 
> In message <09...@ntss30.stgt.cenit.de>,
> J.M
> atysiak@CENIT.DE writes:
> >this is a patch for the DefaultFTPFileListParser.java file which =
> >enables=20
> 
> The patch isn't in the email you sent.  If you forgot to attach it,
> could you resend it to the mailing list?  If you did attach it and
> it was stripped by ezmlm/qmail for some reason, could you resend
> it but include the text inline (and be sure to turn line wrapping off)?
> 
> thanks,
> daniel
> 
> 





---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org