curl: --continue-at is mutually exclusive with --no-clobber

Test 481 verifies

Fixes #15645
Reported-by: Harry Sintonen
Closes #15668
This commit is contained in:
Daniel Stenberg 2024-12-02 14:07:45 +01:00
parent 26ee83ab67
commit ffbcde0022
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
5 changed files with 60 additions and 1 deletions

View File

@ -27,3 +27,5 @@ transfer. It then uses the given output/input files to figure that out.
This command line option is mutually exclusive with --range: you can only use
one of them for a single transfer.
The --no-clobber option cannot be used together with --continue-at.

View File

@ -24,3 +24,5 @@ create any file.
Note that this is the negated option name documented. You can thus use
--clobber to enforce the clobbering, even if --remote-header-name is
specified.
The --continue-at option cannot be used together with --no-clobber.

View File

@ -1849,6 +1849,11 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
errorf(global, "--continue-at is mutually exclusive with --range");
return PARAM_BAD_USE;
}
if(config->file_clobber_mode == CLOBBER_NEVER) {
errorf(config->global,
"--continue-at is mutually exclusive with --no-clobber");
return PARAM_BAD_USE;
}
/* This makes us continue an ftp transfer at given position */
if(strcmp(nextarg, "-")) {
err = str2offset(&config->resume_from, nextarg);
@ -2320,6 +2325,11 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
err = getstr(&config->output_dir, nextarg, DENY_BLANK);
break;
case C_CLOBBER: /* --clobber */
if(config->use_resume && !toggle) {
errorf(config->global,
"--continue-at is mutually exclusive with --no-clobber");
return PARAM_BAD_USE;
}
config->file_clobber_mode = toggle ? CLOBBER_ALWAYS : CLOBBER_NEVER;
break;
case C_OUTPUT: /* --output */

View File

@ -77,7 +77,7 @@ test435 test436 test437 test438 test439 test440 test441 test442 test443 \
test444 test445 test446 test447 test448 test449 test450 test451 test452 \
test453 test454 test455 test456 test457 test458 test459 test460 test461 \
test462 test463 test467 test468 test469 test470 test471 test472 test473 \
test474 test475 test476 test477 test478 test479 test480 \
test474 test475 test476 test477 test478 test479 test480 test481 \
\
test490 test491 test492 test493 test494 test495 test496 test497 test498 \
test499 test500 test501 test502 test503 test504 test505 test506 test507 \

45
tests/data/test481 Normal file
View File

@ -0,0 +1,45 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--no-clobber
--continue-at
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
--no-clobber with --continue-at
</name>
<file name="%LOGDIR/%TESTNUMBER">
initial content
</file>
<command option="no-output,no-include">
http://%HOSTIP:%HTTPPORT/%TESTNUMBER --no-clobber -C 1 -o "%LOGDIR/%TESTNUMBER"
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
2
</errorcode>
<stderr mode="text">
curl: --continue-at is mutually exclusive with --no-clobber
curl: option -C: is badly used here
curl: try 'curl --help' or 'curl --manual' for more information
</stderr>
</verify>
</testcase>