++s;
if (!*s)
return 0;
- if (tolower (*s) != 'b')
+ if (TOLOWER (*s) != 'b')
continue;
if (strncasecmp (s, "byte", 4))
continue;
}
/* Third: Set type to Image (binary). */
if (!opt.server_response)
- logprintf (LOG_VERBOSE, "==> TYPE %c ... ", toupper (u->ftp_type));
- err = ftp_type (&con->rbuf, toupper (u->ftp_type));
+ logprintf (LOG_VERBOSE, "==> TYPE %c ... ", TOUPPER (u->ftp_type));
+ err = ftp_type (&con->rbuf, TOUPPER (u->ftp_type));
/* FTPRERR, WRITEFAILED, FTPUNKNOWNTYPE */
switch (err)
{
logputs (LOG_VERBOSE, "\n");
logprintf (LOG_NOTQUIET,
_("Unknown type `%c', closing control connection.\n"),
- toupper (u->ftp_type));
+ TOUPPER (u->ftp_type));
CLOSE (csock);
rbuf_uninitialize (&con->rbuf);
return err;
/* Close data connection socket. */
closeport (dtsock);
/* Close the local file. */
- if (!opt.dfp || con->cmd & DO_LIST)
- fclose (fp);
- else
- fflush (fp);
+ {
+ /* Close or flush the file. We have to be careful to check for
+ error here. Checking the result of fwrite() is not enough --
+ errors could go unnoticed! */
+ int flush_res;
+ if (!opt.dfp || con->cmd & DO_LIST)
+ flush_res = fclose (fp);
+ else
+ flush_res = fflush (fp);
+ if (flush_res == EOF)
+ res = -2;
+ }
/* If get_contents couldn't write to fp, bail out. */
if (res == -2)
{
/* Increment the pass counter. */
++count;
/* Wait before the retrieval (unless this is the very first
- retrieval). */
- if (!first_retrieval && opt.wait)
- sleep (opt.wait);
+ retrieval).
+ Check if we are retrying or not, wait accordingly - HEH */
+ if (!first_retrieval && (opt.wait || (count && opt.waitretry)))
+ {
+ if (count)
+ {
+ if (count<opt.waitretry)
+ sleep(count);
+ else
+ sleep(opt.waitretry);
+ }
+ else
+ sleep (opt.wait);
+ }
if (first_retrieval)
first_retrieval = 0;
if (con->st & ON_YOUR_OWN)
/* Increase the depth. */
++depth;
- if (opt.reclevel && depth > opt.reclevel)
+ if (opt.reclevel != INFINITE_RECURSION && depth > opt.reclevel)
{
DEBUGP ((_("Recursion depth %d exceeded max. depth %d.\n"),
depth, opt.reclevel));
else if (f->tstamp == -1)
logprintf (LOG_NOTQUIET, _("%s: corrupt time-stamp.\n"), u->local);
- if (f->perms && dlthis)
+ if (f->perms && f->type == FT_PLAINFILE && dlthis)
chmod (u->local, f->perms);
else
DEBUGP (("Unrecognized permissions for %s.\n", u->local));
f = f->next;
} /* while */
/* We do not want to call ftp_retrieve_dirs here */
- if (opt.recursive && !(opt.reclevel && depth >= opt.reclevel))
+ if (opt.recursive &&
+ !(opt.reclevel != INFINITE_RECURSION && depth >= opt.reclevel))
err = ftp_retrieve_dirs (u, orig, con);
else if (opt.recursive)
DEBUGP ((_("Will not retrieve dirs since depth is %d (max %d).\n"),