]> sjero.net Git - wget/blobdiff - src/ftp-ls.c
[svn] Rewrite parsing and handling of URLs.
[wget] / src / ftp-ls.c
index bd3309c62004608553fb65b947ff407a898fae92..91c572e7018a9d3e138e6ebf2ae9bf6d2638c3e3 100644 (file)
@@ -1,21 +1,21 @@
 /* Parsing FTP `ls' output.
-   Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation,
-   Inc. 
+   Copyright (C) 1995, 1996, 1997, 2000, 2001
+   Free Software Foundation, Inc. 
 
-This file is part of Wget.
+This file is part of GNU Wget.
 
-This program is free software; you can redistribute it and/or modify
+GNU Wget is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
+GNU Wget is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
+along with Wget; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #include <config.h>
@@ -146,7 +146,7 @@ ftp_parse_unix_ls (const char *file, int ignore_perms)
          break;
        default:
          cur.type = FT_UNKNOWN;
-         DEBUGP (("UNKOWN; "));
+         DEBUGP (("UNKNOWN; "));
          break;
        }
 
@@ -441,9 +441,11 @@ ftp_parse_winnt_ls (const char *file)
       cur.name = xstrdup(tok);
       DEBUGP(("Name: '%s'\n", cur.name));
 
-      /* First column: mm-dd-yy */
+      /* First column: mm-dd-yy. Should atoi() on the month fail, january
+        will be assumed.  */
       tok = strtok(line, "-");
-      month = atoi(tok);
+      month = atoi(tok) - 1;
+      if (month < 0) month = 0;
       tok = strtok(NULL, "-");
       day = atoi(tok);
       tok = strtok(NULL, " ");
@@ -564,7 +566,7 @@ ftp_parse_vms_ls (const char *file)
   int hour, min, sec;
   struct tm timestruct;
 
-  char *line, *tok, *p;          /* tokenizer */
+  char *line, *tok;             /* tokenizer */
   struct fileinfo *dir, *l, cur; /* list creation */
 
   fp = fopen (file, "rb");
@@ -667,9 +669,9 @@ ftp_parse_vms_ls (const char *file)
       }
       for (i=0; i<12; i++) if (!strcmp(tok,months[i])) break;
       /* Uknown months are mapped to January */
-      month = (i%12)+1
-      tok = strtok(NULL, " ");
-      year = atoi(tok)-1900;
+      month = i % 12 
+      tok = strtok (NULL, " ");
+      year = atoi (tok) - 1900;
       DEBUGP(("date parsed\n"));
 
       /* Fourth/Third column: Time hh:mm[:ss] */
@@ -783,7 +785,7 @@ ftp_parse_ls (const char *file, const enum stype system_type)
       return ftp_parse_unix_ls (file, TRUE);
     default:
       logprintf (LOG_NOTQUIET, _("\
-Usupported listing type, trying Unix listing parser.\n"));
+Unsupported listing type, trying Unix listing parser.\n"));
       return ftp_parse_unix_ls (file, FALSE);
     }
 }
@@ -794,7 +796,7 @@ Usupported listing type, trying Unix listing parser.\n"));
    directories and files on the appropriate host.  The references are
    FTP.  */
 uerr_t
-ftp_index (const char *file, struct urlinfo *u, struct fileinfo *f)
+ftp_index (const char *file, struct url *u, struct fileinfo *f)
 {
   FILE *fp;
   char *upwd;
@@ -815,8 +817,8 @@ ftp_index (const char *file, struct urlinfo *u, struct fileinfo *f)
     {
       char *tmpu, *tmpp;        /* temporary, clean user and passwd */
 
-      tmpu = CLEANDUP (u->user);
-      tmpp = u->passwd ? CLEANDUP (u->passwd) : NULL;
+      tmpu = encode_string (u->user);
+      tmpp = u->passwd ? encode_string (u->passwd) : NULL;
       upwd = (char *)xmalloc (strlen (tmpu)
                             + (tmpp ? (1 + strlen (tmpp)) : 0) + 2);
       sprintf (upwd, "%s%s%s@", tmpu, tmpp ? ":" : "", tmpp ? tmpp : "");