From 0169b80e5c3ca1e2c239a69ff6200297a4a2dbf8 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 2 Dec 2024 14:12:29 +0100 Subject: [PATCH] curl: --continue-at is mutually exclusive with --remove-on-error Test 482 verifies Fixes #15645 Reported-by: Harry Sintonen Closes #15668 --- docs/cmdline-opts/continue-at.md | 3 +- docs/cmdline-opts/remove-on-error.md | 2 ++ src/tool_getparam.c | 10 +++++++ tests/data/Makefile.am | 2 +- tests/data/test482 | 41 ++++++++++++++++++++++++++++ 5 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 tests/data/test482 diff --git a/docs/cmdline-opts/continue-at.md b/docs/cmdline-opts/continue-at.md index 607cf4c0fd..969068f2a3 100644 --- a/docs/cmdline-opts/continue-at.md +++ b/docs/cmdline-opts/continue-at.md @@ -28,4 +28,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. +The --no-clobber and --remove-on-error options cannot be used together with +--continue-at. diff --git a/docs/cmdline-opts/remove-on-error.md b/docs/cmdline-opts/remove-on-error.md index 4f9cf90de1..a88daf9916 100644 --- a/docs/cmdline-opts/remove-on-error.md +++ b/docs/cmdline-opts/remove-on-error.md @@ -19,3 +19,5 @@ save output in a local file. This prevents curl from leaving a partial file in the case of an error during transfer. If the output is not a regular file, this option has no effect. + +The --continue-at option cannot be used together with --remove-on-error. diff --git a/src/tool_getparam.c b/src/tool_getparam.c index c7da51ae1a..abae52bd96 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -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->rm_partial) { + errorf(config->global, + "--continue-at is mutually exclusive with --remove-on-error"); + return PARAM_BAD_USE; + } if(config->file_clobber_mode == CLOBBER_NEVER) { errorf(config->global, "--continue-at is mutually exclusive with --no-clobber"); @@ -2162,6 +2167,11 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ } break; case C_REMOVE_ON_ERROR: /* --remove-on-error */ + if(config->use_resume && toggle) { + errorf(config->global, + "--continue-at is mutually exclusive with --remove-on-error"); + return PARAM_BAD_USE; + } config->rm_partial = toggle; break; case C_FAIL: /* --fail */ diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index d13811a4fa..776b5934bb 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -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 test481 \ +test474 test475 test476 test477 test478 test479 test480 test481 test482 \ \ test490 test491 test492 test493 test494 test495 test496 test497 test498 \ test499 test500 test501 test502 test503 test504 test505 test506 test507 \ diff --git a/tests/data/test482 b/tests/data/test482 new file mode 100644 index 0000000000..ce7f8f2b41 --- /dev/null +++ b/tests/data/test482 @@ -0,0 +1,41 @@ + + + +HTTP +--remove-on-error +--continue-at + + + +# +# Server-side + + + +# +# Client-side + + +http + + +--remove-on-error with --continue-at + + +http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "%LOGDIR/%TESTNUMBER" + + + +# +# Verify data after the test has been "shot" + + +2 + + +curl: --continue-at is mutually exclusive with --remove-on-error +curl: option -C: is badly used here +curl: try 'curl --help' or 'curl --manual' for more information + + +