./configure (optional if already run)
make
-based-on: 34141954c7179438f3b3c5e11f55089e5aee5a8e
+based-on: d4fc18f3755987ccea6e7f43609f862aa0254c5a
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
{"write-devices", 0, POPT_ARG_VAL, &write_devices, 1, 0, 0 },
{"no-write-devices", 0, POPT_ARG_VAL, &write_devices, 0, 0, 0 },
{"specials", 0, POPT_ARG_VAL, &preserve_specials, 1, 0, 0 },
-@@ -1121,8 +1123,10 @@ static void set_refuse_options(void)
- }
+@@ -1108,6 +1110,7 @@ static void set_refuse_options(void)
+ || strcmp("iconv", longName) == 0
+ || strcmp("no-iconv", longName) == 0
+ || strcmp("checksum-seed", longName) == 0
++ || strcmp("copy-devices", longName) == 0 /* disable wild-match (it gets refused below) */
+ || strcmp("write-devices", longName) == 0 /* disable wild-match (it gets refused below) */
+ || strcmp("log-format", longName) == 0 /* aka out-format (NOT log-file-format) */
+ || strcmp("sender", longName) == 0
+@@ -1119,6 +1122,7 @@ static void set_refuse_options(void)
assert(list_end != NULL);
-- if (am_daemon) /* Refused by default, but can be accepted via "!write-devices" */
-+ if (am_daemon) { /* Refused by default, but can be accepted via negated (!) rules. */
+ if (am_daemon) { /* Refused by default, but can be accepted via a negated exact match. */
+ parse_one_refuse_match(0, "copy-devices", list_end);
parse_one_refuse_match(0, "write-devices", list_end);
-+ }
+ }
- while (1) {
- while (*ref == ' ') ref++;
-@@ -2821,6 +2825,9 @@ void server_options(char **args, int *argc_p)
+@@ -2830,6 +2834,9 @@ void server_options(char **args, int *argc_p)
else if (remove_source_files)
args[ac++] = "--remove-sent-files";