Jaz Fresh pointed out that if you used "-r [number]" as was wrongly described

in the man page, curl would send an invalid HTTP Range: header. The correct
way would be to use "-r [number]-" or even "-r -[number]". Starting now,
curl will warn if this is discovered, and automatically append a dash to the
range before passing it to libcurl.
This commit is contained in:
Daniel Stenberg 2005-10-27 12:05:36 +00:00
parent 33dc28b905
commit 9d152a77fd
4 changed files with 29 additions and 4 deletions

View file

@ -2097,8 +2097,24 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
return err;
break;
case 'r':
/* byte range requested */
GetStr(&config->range, nextarg);
/* Specifying a range WITHOUT A DASH will create an illegal HTTP range
(and won't actually be range by definition). The man page previously
claimed that to be a good way, why this code is added to work-around
it. */
if(!strchr(nextarg, '-')) {
char buffer[32];
curl_off_t off;
warnf(config,
"A specfied range MUST include at least one dash (-). "
"Appending one for you!\n");
off = curlx_strtoofft(nextarg, NULL, 10);
snprintf(buffer, sizeof(buffer), CURL_FORMAT_OFF_T "-", off);
GetStr(&config->range, buffer);
}
else
/* byte range requested */
GetStr(&config->range, nextarg);
break;
case 'R':
/* use remote file's time */