/* Parsing FTP `ls' output.
- Copyright (C) 1995, 1996, 1997, 2000, 2001
- Free Software Foundation, Inc.
+ Copyright (C) 1996-2004 Free Software Foundation, Inc.
This file is part of GNU Wget.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with Wget; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+along with Wget; if not, write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
In addition, as a special exception, the Free Software Foundation
gives permission to link the code of its release of Wget with the
struct tm timestruct, *tnow;
time_t timenow;
- char *line, *tok; /* tokenizer */
+ char *line, *tok, *ptok; /* tokenizer */
struct fileinfo *dir, *l, cur; /* list creation */
fp = fopen (file, "rb");
This tactic is quite dubious when it comes to
internationalization issues (non-English month names), but it
works for now. */
- while ((tok = strtok (NULL, " ")) != NULL)
+ tok = line;
+ while (ptok = tok,
+ (tok = strtok (NULL, " ")) != NULL)
{
--next;
if (next < 0) /* a month name was not encountered */
{
wgint size;
- /* Back up to the beginning of the previous token
- and parse it with str_to_wgint. */
- char *t = tok - 2;
- while (t > line && ISDIGIT (*t))
- --t;
- if (t == line)
+ /* Parse the previous token with str_to_wgint. */
+ if (ptok == line)
{
/* Something has gone wrong during parsing. */
error = 1;
break;
}
errno = 0;
- size = str_to_wgint (t, NULL, 10);
+ size = str_to_wgint (ptok, NULL, 10);
if (size == WGINT_MAX && errno == ERANGE)
/* Out of range -- ignore the size. #### Should
we refuse to start the download. */
cur.size = 0;
else
cur.size = size;
+ DEBUGP (("size: %s; ", number_to_static_string(cur.size)));
month = i;
next = 5;
if (!cur.name || (cur.type == FT_SYMLINK && !cur.linkto))
error = 1;
- DEBUGP (("\n"));
+ DEBUGP (("%s\n", cur.name ? cur.name : ""));
if (error || ignore)
{
tok = strtok(line, " ");
if (tok == NULL) tok = line;
DEBUGP(("file name: '%s'\n", tok));
- for (p = tok ; *p && *p != ';' ; p++);
+ for (p = tok ; *p && *p != ';' ; p++)
+ ;
if (*p == ';') *p = '\0';
p = tok + strlen(tok) - 4;
if (!strcmp(p, ".DIR")) *p = '\0';
min = sec = 0;
p = tok;
hour = atoi (p);
- for (; *p && *p != ':'; ++p);
+ for (; *p && *p != ':'; ++p)
+ ;
if (*p)
min = atoi (++p);
- for (; *p && *p != ':'; ++p);
+ for (; *p && *p != ':'; ++p)
+ ;
if (*p)
sec = atoi (++p);