summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2001-06-25 12:56:06 +0000
committerDaniel Stenberg <daniel@haxx.se>2001-06-25 12:56:06 +0000
commit6f2fca53add357b98dc07ef846a65fd927e7d3dc (patch)
treedb70d3bc8a097c6dfa307bcd44ffd08a349dde6a
parentcd4aed6690aac1d001865bf144c85cd3eb423b51 (diff)
downloadcurl-6f2fca53add357b98dc07ef846a65fd927e7d3dc.tar.gz
'resume from'-fix. When using "-C -" and doing multiple file download, the
first resume was used on all files instead of being reset between each file. As found by Björn Stenberg.
-rw-r--r--src/main.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/main.c b/src/main.c
index 4466751a2..125222db5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -309,6 +309,7 @@ struct Configurable {
char *useragent;
char *cookie;
bool use_resume;
+ bool resume_from_current;
int resume_from;
char *postfields;
long postfieldsize;
@@ -757,8 +758,14 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
break;
case 'C':
/* This makes us continue an ftp transfer at given position */
- if(!strequal(nextarg, "-"))
+ if(!strequal(nextarg, "-")) {
config->resume_from= atoi(nextarg);
+ config->resume_from_current = FALSE;
+ }
+ else {
+ config->resume_from_current = TRUE;
+ config->resume_from = 0;
+ }
config->use_resume=TRUE;
break;
case 'd':
@@ -1639,7 +1646,7 @@ operate(struct Configurable *config, int argc, char *argv[])
free(storefile);
}
- if((0 == config->resume_from) && config->use_resume) {
+ if(config->resume_from_current) {
/* we're told to continue where we are now, then we get the size of
the file as it is now and open it for append instead */
@@ -1707,8 +1714,7 @@ operate(struct Configurable *config, int argc, char *argv[])
}
if((config->conf&CONF_UPLOAD) &&
- config->use_resume &&
- (0==config->resume_from)) {
+ config->resume_from_current) {
config->resume_from = -1; /* -1 will then force get-it-yourself */
}
if(config->headerfile) {