]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
curl: --continue-at is mutually exclusive with --no-clobber
authorDaniel Stenberg <daniel@haxx.se>
Mon, 2 Dec 2024 13:07:45 +0000 (14:07 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 2 Dec 2024 20:22:47 +0000 (21:22 +0100)
Test 481 verifies

Fixes #15645
Reported-by: Harry Sintonen
Closes #15668

docs/cmdline-opts/continue-at.md
docs/cmdline-opts/no-clobber.md
src/tool_getparam.c
tests/data/Makefile.am
tests/data/test481 [new file with mode: 0644]

index e57671c35006d070524e5028f70382ccb337cb39..607cf4c0fd457afd2a3168134877ed5dbdbf8eae 100644 (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.
index 6909005638caf5fe376f1287cb4ba2a958f1aace..02a74b25e4d452bdefe5e4d58b2c6a8689bf66d1 100644 (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.
index 7c31ca1cb62c5ee6a6689eff6a258d266f483a31..c7da51ae1ad2eaf81b4e05833e694b33cd52a034 100644 (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 */
index 53f62c6e28f650f2ab49f1933afc03784540f366..d13811a4fa91f88d2f417921322e2d34d66f1a4e 100644 (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 \
diff --git a/tests/data/test481 b/tests/data/test481
new file mode 100644 (file)
index 0000000..f59fec2
--- /dev/null
@@ -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>