./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -775,7 +775,8 @@ static struct poptOption long_options[] = {
+@@ -776,7 +776,8 @@ static struct poptOption long_options[] = {
{"no-i", 0, POPT_ARG_VAL, &itemize_changes, 0, 0, 0 },
{"bwlimit", 0, POPT_ARG_STRING, &bwlimit_arg, OPT_BWLIMIT, 0, 0 },
{"no-bwlimit", 0, POPT_ARG_VAL, &bwlimit, 0, 0, 0 },
{"no-backup", 0, POPT_ARG_VAL, &make_backups, 0, 0, 0 },
{"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
{"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
-@@ -2783,6 +2784,10 @@ void server_options(char **args, int *argc_p)
+@@ -2803,6 +2804,10 @@ void server_options(char **args, int *argc_p)
args[ac++] = safe_arg("--compress-choice", compress_choice);
if (am_sender) {
char *sockopts = NULL;
char *usermap = NULL;
char *groupmap = NULL;
-@@ -779,7 +785,9 @@ static struct poptOption long_options[] = {
+@@ -780,7 +786,9 @@ static struct poptOption long_options[] = {
{"backup-deleted", 0, POPT_ARG_VAL, &make_backups, 1, 0, 0 },
{"no-backup", 0, POPT_ARG_VAL, &make_backups, 0, 0, 0 },
{"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
{"list-only", 0, POPT_ARG_VAL, &list_only, 2, 0, 0 },
{"read-batch", 0, POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
{"write-batch", 0, POPT_ARG_STRING, &batch_name, OPT_WRITE_BATCH, 0, 0 },
-@@ -2234,6 +2242,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2251,6 +2259,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
tmpdir = sanitize_path(NULL, tmpdir, NULL, 0, SP_DEFAULT);
if (backup_dir)
backup_dir = sanitize_path(NULL, backup_dir, NULL, 0, SP_DEFAULT);
}
if (daemon_filter_list.head && !am_sender) {
filter_rule_list *elp = &daemon_filter_list;
-@@ -2255,6 +2265,14 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2272,6 +2282,14 @@ int parse_arguments(int *argc_p, const char ***argv_p)
if (check_filter(elp, FLOG, dir, 1) < 0)
goto options_rejected;
}
}
if (!backup_suffix)
-@@ -2266,6 +2284,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2283,6 +2301,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
backup_suffix);
- return 0;
+ goto cleanup;
}
+ /* --suffix-dels defaults to --suffix, or empty for a client given an
+ * explicit --backup-dir-dels (just as --suffix defaults to empty when
if (backup_dir) {
size_t len;
make_backups = 1; /* --backup-dir implies --backup */
-@@ -2302,6 +2334,34 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2319,6 +2351,34 @@ int parse_arguments(int *argc_p, const char ***argv_p)
"P *%s", backup_suffix);
parse_filter_str(&filter_list, backup_dir_buf, rule_template(0), 0);
}
if (make_backups && !backup_dir)
omit_dir_times = -1; /* Implied, so avoid -O to sender. */
-@@ -2768,11 +2828,20 @@ void server_options(char **args, int *argc_p)
+@@ -2788,11 +2848,20 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--backup-dir";
args[ac++] = safe_arg("", backup_dir);
}
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/errcode.h b/errcode.h
--- a/errcode.h
+++ b/errcode.h
diff --git a/main.c b/main.c
--- a/main.c
+++ b/main.c
-@@ -216,8 +216,11 @@ static void wait_process_with_flush(pid_t pid, int *exit_code_ptr)
+@@ -218,8 +218,11 @@ static void wait_process_with_flush(pid_t pid, int *exit_code_ptr)
*exit_code_ptr = RERR_TERMINATED;
else
*exit_code_ptr = RERR_WAITCHILD;
}
void write_del_stats(int f)
-@@ -1646,6 +1649,14 @@ void remember_children(UNUSED(int val))
+@@ -1637,6 +1640,14 @@ void remember_children(UNUSED(int val))
break;
}
}
}
#endif
#ifndef HAVE_SIGACTION
-@@ -1699,6 +1710,13 @@ static void rsync_panic_handler(UNUSED(int whatsig))
+@@ -1690,6 +1701,13 @@ static void rsync_panic_handler(UNUSED(int whatsig))
}
#endif
static void unset_env_var(const char *var)
{
#ifdef HAVE_UNSETENV
-@@ -1715,7 +1733,6 @@ static void unset_env_var(const char *var)
+@@ -1706,7 +1724,6 @@ static void unset_env_var(const char *var)
#endif
}
int main(int argc,char *argv[])
{
int ret;
-@@ -1739,6 +1756,11 @@ int main(int argc,char *argv[])
+@@ -1730,6 +1747,11 @@ int main(int argc,char *argv[])
SIGACTMASK(SIGFPE, rsync_panic_handler);
SIGACTMASK(SIGABRT, rsync_panic_handler);
SIGACTMASK(SIGBUS, rsync_panic_handler);
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
int max_delete = INT_MIN;
OFF_T max_size = -1;
OFF_T min_size = -1;
-@@ -581,7 +582,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -582,7 +583,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, OPT_MIN_SIZE, OPT_CHMOD,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE,
OPT_NO_D, OPT_APPEND, OPT_NO_ICONV, OPT_INFO, OPT_DEBUG, OPT_BLOCK_SIZE,
OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS, OPT_OLD_ARGS,
OPT_STOP_AFTER, OPT_STOP_AT,
OPT_REFUSED_BASE = 9000};
-@@ -738,6 +739,7 @@ static struct poptOption long_options[] = {
+@@ -739,6 +740,7 @@ static struct poptOption long_options[] = {
{"no-c", 0, POPT_ARG_VAL, &always_checksum, 0, 0, 0 },
{"checksum-choice", 0, POPT_ARG_STRING, &checksum_choice, 0, 0, 0 },
{"cc", 0, POPT_ARG_STRING, &checksum_choice, 0, 0, 0 },
{"block-size", 'B', POPT_ARG_STRING, 0, OPT_BLOCK_SIZE, 0, 0 },
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
-@@ -1746,6 +1748,23 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1751,6 +1753,23 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
break;
case OPT_INFO:
arg = poptGetOptArg(pc);
parse_output_words(info_words, info_levels, arg, USER_PRIORITY);
-@@ -2099,6 +2118,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2116,6 +2135,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
#endif
diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md
--- a/rsyncd.conf.5.md
+++ b/rsyncd.conf.5.md
-@@ -449,6 +449,19 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details.
+@@ -453,6 +453,19 @@ in the values of parameters. See that section for details.
the max connections limit is not exceeded for the modules sharing the lock
file. The default is `/var/run/rsyncd.lock`.
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -1750,7 +1750,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1755,7 +1755,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
case OPT_SUMFILES:
arg = poptGetOptArg(pc);
diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md
--- a/rsyncd.conf.5.md
+++ b/rsyncd.conf.5.md
-@@ -454,13 +454,15 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details.
+@@ -458,13 +458,15 @@ in the values of parameters. See that section for details.
This parameter tells rsync to make use of any cached checksum information
it finds in per-directory .rsyncsums files when the current transfer is
using the `--checksum` option. The value can be set to either "lax",
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -581,7 +581,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -582,7 +582,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, OPT_MIN_SIZE, OPT_CHMOD,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE,
OPT_NO_D, OPT_APPEND, OPT_NO_ICONV, OPT_INFO, OPT_DEBUG, OPT_BLOCK_SIZE,
OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS, OPT_OLD_ARGS,
OPT_STOP_AFTER, OPT_STOP_AT,
OPT_REFUSED_BASE = 9000};
-@@ -742,6 +742,7 @@ static struct poptOption long_options[] = {
+@@ -743,6 +743,7 @@ static struct poptOption long_options[] = {
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
{"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
{"fuzzy", 'y', POPT_ARG_NONE, 0, 'y', 0, 0 },
{"no-fuzzy", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
{"no-y", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
-@@ -1003,6 +1004,9 @@ static void set_refuse_options(void)
+@@ -1004,6 +1005,9 @@ static void set_refuse_options(void)
#ifndef SUPPORT_HARD_LINKS
parse_one_refuse_match(0, "link-dest", list_end);
#endif
#ifndef HAVE_MKTIME
parse_one_refuse_match(0, "stop-at", list_end);
#endif
-@@ -1332,6 +1336,8 @@ char *alt_dest_opt(int type)
+@@ -1333,6 +1337,8 @@ char *alt_dest_opt(int type)
return "--copy-dest";
case LINK_DEST:
return "--link-dest";
default:
NOISY_DEATH("Unknown alt_dest_opt type");
}
-@@ -1709,6 +1715,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1714,6 +1720,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
want_dest_type = LINK_DEST;
goto set_dest_dir;
--compress, -z compress file data during the transfer
--compress-choice=STR choose the compression algorithm (aka --zc)
--compress-level=NUM explicitly set compression level (aka --zl)
-@@ -2717,6 +2718,18 @@ expand it.
+@@ -2719,6 +2720,18 @@ expand it.
this bug by avoiding the `-o` option (or using `--no-o`) when sending to an
old rsync.
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/daemon-parm.txt b/daemon-parm.txt
--- a/daemon-parm.txt
+++ b/daemon-parm.txt
int remove_source_files = 0;
int one_file_system = 0;
int protocol_version = PROTOCOL_VERSION;
-@@ -831,6 +833,8 @@ static struct poptOption long_options[] = {
+@@ -832,6 +834,8 @@ static struct poptOption long_options[] = {
{"outbuf", 0, POPT_ARG_STRING, &outbuf_mode, 0, 0, 0 },
{"remote-option", 'M', POPT_ARG_STRING, 0, 'M', 0, 0 },
{"protocol", 0, POPT_ARG_INT, &protocol_version, 0, 0, 0 },
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
int daemon_bwlimit = 0;
int bwlimit = 0;
int fuzzy_basis = 0;
-@@ -688,6 +689,7 @@ static struct poptOption long_options[] = {
+@@ -689,6 +690,7 @@ static struct poptOption long_options[] = {
{"chmod", 0, POPT_ARG_STRING, 0, OPT_CHMOD, 0, 0 },
{"ignore-times", 'I', POPT_ARG_NONE, &ignore_times, 0, 0, 0 },
{"size-only", 0, POPT_ARG_NONE, &size_only, 0, 0, 0 },
{"one-file-system", 'x', POPT_ARG_NONE, 0, 'x', 0, 0 },
{"no-one-file-system",0, POPT_ARG_VAL, &one_file_system, 0, 0, 0 },
{"no-x", 0, POPT_ARG_VAL, &one_file_system, 0, 0, 0 },
-@@ -2830,6 +2832,9 @@ void server_options(char **args, int *argc_p)
+@@ -2850,6 +2852,9 @@ void server_options(char **args, int *argc_p)
else if (missing_args == 1 && !am_sender)
args[ac++] = "--ignore-missing-args";
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -743,7 +743,9 @@ static struct poptOption long_options[] = {
+@@ -744,7 +744,9 @@ static struct poptOption long_options[] = {
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
{"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
{"fuzzy", 'y', POPT_ARG_NONE, 0, 'y', 0, 0 },
{"no-fuzzy", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
{"no-y", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
-@@ -2816,8 +2818,14 @@ void server_options(char **args, int *argc_p)
+@@ -2836,8 +2838,14 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--super";
if (size_only)
args[ac++] = "--size-only";
--compare-dest=DIR also compare destination files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
-@@ -2649,6 +2651,20 @@ expand it.
+@@ -2651,6 +2653,20 @@ expand it.
otential alternate-basis files will be removed as the transfer progresses.
This option conflicts with [`--inplace`](#opt) and [`--append`](#opt).
a file that can't use it, while missing out on giving it to a file
that could use it.
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/backup.c b/backup.c
--- a/backup.c
+++ b/backup.c
diff --git a/main.c b/main.c
--- a/main.c
+++ b/main.c
-@@ -724,7 +724,7 @@ static char *get_local_name(struct file_list *flist, char *dest_path)
+@@ -726,7 +726,7 @@ static char *get_local_name(struct file_list *flist, char *dest_path)
if (mkpath_dest_arg && statret < 0 && (cp || file_total > 1)) {
int save_errno = errno;
int implied_dirs = 1;
int missing_args = 0; /* 0 = FERROR_XFER, 1 = ignore, 2 = delete */
int numeric_ids = 0;
-@@ -742,6 +743,7 @@ static struct poptOption long_options[] = {
+@@ -743,6 +744,7 @@ static struct poptOption long_options[] = {
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
{"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
{"fuzzy", 'y', POPT_ARG_NONE, 0, 'y', 0, 0 },
{"no-fuzzy", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
{"no-y", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
-@@ -2381,7 +2383,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2398,7 +2400,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
inplace = 1;
}
partial_dir = tmp_partialdir;
if (inplace) {
-@@ -2390,6 +2392,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2407,6 +2409,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
snprintf(err_buf, sizeof err_buf,
"--%s cannot be used with --%s\n",
append_mode ? "append" : "inplace",
+ detect_renamed ? "detect-renamed" :
delay_updates ? "delay-updates" : "partial-dir");
- return 0;
+ goto cleanup;
}
-@@ -2813,6 +2816,8 @@ void server_options(char **args, int *argc_p)
+@@ -2833,6 +2836,8 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--super";
if (size_only)
args[ac++] = "--size-only";
--compare-dest=DIR also compare destination files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
-@@ -2632,6 +2633,22 @@ expand it.
+@@ -2634,6 +2635,22 @@ expand it.
potential fuzzy-match files, so either use [`--delete-after`](#opt) or
specify some filename exclusions if you need to prevent this.
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
extern int module_id;
extern int local_server;
extern int sanitize_paths;
-@@ -763,6 +764,8 @@ static struct poptOption long_options[] = {
+@@ -764,6 +765,8 @@ static struct poptOption long_options[] = {
{"partial-dir", 0, POPT_ARG_STRING, &partial_dir, 0, 0, 0 },
{"delay-updates", 0, POPT_ARG_VAL, &delay_updates, 1, 0, 0 },
{"no-delay-updates", 0, POPT_ARG_VAL, &delay_updates, 0, 0, 0 },
--prune-empty-dirs, -m prune empty directory chains from file-list
--numeric-ids don't map uid/gid values by user/group name
--usermap=STRING custom username mapping
-@@ -3430,6 +3431,17 @@ expand it.
+@@ -3432,6 +3433,17 @@ expand it.
update algorithm that is even more atomic (it uses [`--link-dest`](#opt)
and a parallel hierarchy of files).
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
int open_noatime = 0;
int cvs_exclude = 0;
int dry_run = 0;
-@@ -692,6 +693,7 @@ static struct poptOption long_options[] = {
+@@ -693,6 +694,7 @@ static struct poptOption long_options[] = {
{"no-one-file-system",0, POPT_ARG_VAL, &one_file_system, 0, 0, 0 },
{"no-x", 0, POPT_ARG_VAL, &one_file_system, 0, 0, 0 },
{"update", 'u', POPT_ARG_NONE, &update_only, 0, 0, 0 },
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/compat.c b/compat.c
--- a/compat.c
+++ b/compat.c
extern int msgs2stderr;
extern int module_id;
extern int read_only;
-@@ -975,6 +979,22 @@ static int do_recv(int f_in, int f_out, char *local_name)
+@@ -977,6 +981,22 @@ static int do_recv(int f_in, int f_out, char *local_name)
* points to an identical file won't be replaced by the referent. */
copy_links = copy_dirlinks = copy_unsafe_links = 0;
int io_timeout = 0;
int prune_empty_dirs = 0;
int use_qsort = 0;
-@@ -622,6 +624,8 @@ static struct poptOption long_options[] = {
+@@ -623,6 +625,8 @@ static struct poptOption long_options[] = {
{"perms", 'p', POPT_ARG_VAL, &preserve_perms, 1, 0, 0 },
{"no-perms", 0, POPT_ARG_VAL, &preserve_perms, 0, 0, 0 },
{"no-p", 0, POPT_ARG_VAL, &preserve_perms, 0, 0, 0 },
{"executability", 'E', POPT_ARG_NONE, &preserve_executability, 0, 0, 0 },
{"acls", 'A', POPT_ARG_NONE, 0, 'A', 0, 0 },
{"no-acls", 0, POPT_ARG_VAL, &preserve_acls, 0, 0, 0 },
-@@ -720,6 +724,12 @@ static struct poptOption long_options[] = {
+@@ -721,6 +725,12 @@ static struct poptOption long_options[] = {
{"remove-source-files",0,POPT_ARG_VAL, &remove_source_files, 1, 0, 0 },
{"force", 0, POPT_ARG_VAL, &force_delete, 1, 0, 0 },
{"no-force", 0, POPT_ARG_VAL, &force_delete, 0, 0, 0 },
{"ignore-errors", 0, POPT_ARG_VAL, &ignore_errors, 1, 0, 0 },
{"no-ignore-errors", 0, POPT_ARG_VAL, &ignore_errors, 0, 0, 0 },
{"max-delete", 0, POPT_ARG_INT, &max_delete, 0, 0, 0 },
-@@ -1015,6 +1025,14 @@ static void set_refuse_options(void)
+@@ -1016,6 +1026,14 @@ static void set_refuse_options(void)
#ifndef SUPPORT_CRTIMES
parse_one_refuse_match(0, "crtimes", list_end);
#endif
/* Now we use the descrip values to actually mark the options for refusal. */
for (op = long_options; op != list_end; op++) {
-@@ -2712,6 +2730,9 @@ void server_options(char **args, int *argc_p)
+@@ -2732,6 +2750,9 @@ void server_options(char **args, int *argc_p)
if (xfer_dirs && !recurse && delete_mode && am_sender)
args[ac++] = "--no-r";
if (do_compression && do_compression_level != CLVL_NOT_SPECIFIED) {
if (asprintf(&arg, "--compress-level=%d", do_compression_level) < 0)
goto oom;
-@@ -2807,6 +2828,16 @@ void server_options(char **args, int *argc_p)
+@@ -2827,6 +2848,16 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--delete-excluded";
if (force_delete)
args[ac++] = "--force";
0. `--chmod=CHMOD`
This option tells rsync to apply one or more comma-separated "chmod" modes
-@@ -2017,8 +2053,8 @@ expand it.
+@@ -2019,8 +2055,8 @@ expand it.
[`--ignore-missing-args`](#opt) option a step farther: each missing arg
will become a deletion request of the corresponding destination file on the
receiving side (should it exist). If the destination file is a non-empty
independent of any other type of delete processing.
The missing source files are represented by special file-list entries which
-@@ -2029,14 +2065,14 @@ expand it.
+@@ -2031,14 +2067,14 @@ expand it.
Tells [`--delete`](#opt) to go ahead and delete files even when there are
I/O errors.
[`--recursive`](#opt) option was also enabled.
0. `--max-delete=NUM`
-@@ -3096,7 +3132,7 @@ expand it.
+@@ -3098,7 +3134,7 @@ expand it.
also turns on the output of other verbose messages).
The "%i" escape has a cryptic output that is 11 letters long. The general
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
See the [`--perms`](#opt) and [`--executability`](#opt) options for how the
resulting permission value can be applied to the files in the transfer.
-@@ -3030,6 +3032,10 @@ expand it.
+@@ -3032,6 +3034,10 @@ expand it.
An older rsync client may need to use [`-s`](#opt) to avoid a complaint
about wildcard characters, but a modern rsync handles this automatically.
0. `--timeout=SECONDS`
This option allows you to set a maximum I/O timeout in seconds. If no data
-@@ -4184,6 +4190,15 @@ The following modifiers are accepted after an include (+) or exclude (-) rule:
+@@ -4186,6 +4192,15 @@ The following modifiers are accepted after an include (+) or exclude (-) rule:
like "CVS" and "`*.o`" are marked as perishable, and will not prevent a
directory that was removed on the source from being deleted on the
destination.
- An `x` indicates that a rule affects xattr names in xattr copy/delete
operations (and is thus ignored when matching file/dir names). If no
xattr-matching rules are specified, a default xattr filtering rule is used
-@@ -4241,6 +4256,12 @@ The following modifiers are accepted after a merge or dir-merge rule:
+@@ -4243,6 +4258,12 @@ The following modifiers are accepted after a merge or dir-merge rule:
rules in the file must not specify sides (via a modifier or a rule prefix
such as `hide`).
- Make this code handle multibyte character encodings, and honor the
--iconv setting when converting case.
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
int blocking_io = -1;
int checksum_seed = 0;
int inplace = 0;
-@@ -783,6 +784,8 @@ static struct poptOption long_options[] = {
+@@ -784,6 +785,8 @@ static struct poptOption long_options[] = {
{"read-batch", 0, POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
{"write-batch", 0, POPT_ARG_STRING, &batch_name, OPT_WRITE_BATCH, 0, 0 },
{"only-write-batch", 0, POPT_ARG_STRING, &batch_name, OPT_ONLY_WRITE_BATCH, 0, 0 },
{"files-from", 0, POPT_ARG_STRING, &files_from, 0, 0, 0 },
{"from0", '0', POPT_ARG_VAL, &eol_nulls, 1, 0, 0},
{"no-from0", 0, POPT_ARG_VAL, &eol_nulls, 0, 0, 0},
-@@ -2843,6 +2846,9 @@ void server_options(char **args, int *argc_p)
+@@ -2863,6 +2866,9 @@ void server_options(char **args, int *argc_p)
args[ac++] = arg;
}
--address=ADDRESS bind address for outgoing socket to daemon
--port=PORT specify double-colon alternate port number
--sockopts=OPTIONS specify custom TCP options
-@@ -2580,6 +2581,12 @@ expand it.
+@@ -2582,6 +2583,12 @@ expand it.
> sudo rsync -aive lsh -M--copy-as=joe src/ lh:dest/
./configure
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/main.c b/main.c
--- a/main.c
+++ b/main.c
-@@ -1589,7 +1589,7 @@ static int start_client(int argc, char *argv[])
+@@ -1580,7 +1580,7 @@ static int start_client(int argc, char *argv[])
* remote shell command, we need to do the RSYNCD protocol first */
if (daemon_connection) {
int tmpret;
./configure
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
extern const char *checksum_choice;
#define NNI_BUILTIN (1<<0)
-@@ -538,7 +540,7 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
+@@ -539,7 +541,7 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
}
static int32 sumresidue;
#ifdef SUPPORT_XXHASH
static XXH64_state_t* xxh64_state;
#endif
-@@ -596,6 +598,8 @@ int sum_init(struct name_num_item *nni, int seed)
+@@ -597,6 +599,8 @@ int sum_init(struct name_num_item *nni, int seed)
#endif
case CSUM_MD5:
md5_begin(&ctx_md);
break;
case CSUM_MD4:
mdfour_begin(&ctx_md);
-@@ -642,6 +646,8 @@ void sum_update(const char *p, int32 len)
+@@ -643,6 +647,8 @@ void sum_update(const char *p, int32 len)
#endif
case CSUM_MD5:
md5_update(&ctx_md, (uchar *)p, len);
break;
case CSUM_MD4:
case CSUM_MD4_OLD:
-@@ -708,6 +714,8 @@ void sum_end(char *sum)
+@@ -709,6 +715,8 @@ void sum_end(char *sum)
#endif
case CSUM_MD5:
md5_result(&ctx_md, (uchar *)sum);
char *config_file = NULL;
char *shell_cmd = NULL;
char *logfile_name = NULL;
-@@ -230,7 +231,7 @@ static const char *debug_verbosity[] = {
+@@ -231,7 +232,7 @@ static const char *debug_verbosity[] = {
/*2*/ "BIND,CMD,CONNECT,DEL,DELTASUM,DUP,FILTER,FLIST,ICONV",
/*3*/ "ACL,BACKUP,CONNECT2,DELTASUM2,DEL2,EXIT,FILTER2,FLIST2,FUZZY,GENR,OWN,RECV,SEND,TIME",
/*4*/ "CMD2,DELTASUM3,DEL3,EXIT2,FLIST3,ICONV2,OWN2,PROTO,TIME2",
};
#define MAX_VERBOSITY ((int)(sizeof debug_verbosity / sizeof debug_verbosity[0]) - 1)
-@@ -301,6 +302,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = {
+@@ -302,6 +303,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = {
DEBUG_WORD(FUZZY, W_REC, "Debug fuzzy scoring (levels 1-2)"),
DEBUG_WORD(GENR, W_REC, "Debug generator functions"),
DEBUG_WORD(HASH, W_SND|W_REC, "Debug hashtable code"),
DEBUG_WORD(HLINK, W_SND|W_REC, "Debug hard-link actions (levels 1-3)"),
DEBUG_WORD(ICONV, W_CLI|W_SRV, "Debug iconv character conversions (levels 1-2)"),
DEBUG_WORD(IO, W_CLI|W_SRV, "Debug I/O routines (levels 1-4)"),
-@@ -581,7 +583,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -582,7 +584,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, OPT_MIN_SIZE, OPT_CHMOD,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE,
OPT_NO_D, OPT_APPEND, OPT_NO_ICONV, OPT_INFO, OPT_DEBUG, OPT_BLOCK_SIZE,
OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS, OPT_OLD_ARGS,
OPT_STOP_AFTER, OPT_STOP_AT,
OPT_REFUSED_BASE = 9000};
-@@ -742,6 +744,7 @@ static struct poptOption long_options[] = {
+@@ -743,6 +745,7 @@ static struct poptOption long_options[] = {
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
{"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
{"fuzzy", 'y', POPT_ARG_NONE, 0, 'y', 0, 0 },
{"no-fuzzy", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
{"no-y", 0, POPT_ARG_VAL, &fuzzy_basis, 0, 0, 0 },
-@@ -989,6 +992,9 @@ static void set_refuse_options(void)
+@@ -990,6 +993,9 @@ static void set_refuse_options(void)
ref = cp + 1;
}
if (am_daemon) {
#ifdef ICONV_OPTION
if (!*lp_charset(module_id))
-@@ -1862,6 +1868,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
- return 0;
+@@ -1867,6 +1873,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+ goto cleanup;
#endif
+ case OPT_LINK_BY_HASH:
case OPT_STOP_AFTER: {
long val;
arg = poptGetOptArg(pc);
-@@ -2233,6 +2253,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2250,6 +2270,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
tmpdir = sanitize_path(NULL, tmpdir, NULL, 0, SP_DEFAULT);
if (backup_dir)
backup_dir = sanitize_path(NULL, backup_dir, NULL, 0, SP_DEFAULT);
}
if (daemon_filter_list.head && !am_sender) {
filter_rule_list *elp = &daemon_filter_list;
-@@ -2919,6 +2941,12 @@ void server_options(char **args, int *argc_p)
+@@ -2939,6 +2961,12 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--no-W";
}
--compress, -z compress file data during the transfer
--compress-choice=STR choose the compression algorithm (aka --zc)
--compress-level=NUM explicitly set compression level (aka --zl)
-@@ -2717,6 +2718,50 @@ expand it.
+@@ -2719,6 +2720,50 @@ expand it.
this bug by avoiding the `-o` option (or using `--no-o`) when sending to an
old rsync.
diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md
--- a/rsyncd.conf.5.md
+++ b/rsyncd.conf.5.md
-@@ -384,6 +384,23 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details.
+@@ -388,6 +388,23 @@ in the values of parameters. See that section for details.
is 0, which means no limit. A negative value disables the module. See
also the "[lock file](#)" parameter.
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
int omit_dir_times = 0;
int omit_link_times = 0;
int trust_sender = 0;
-@@ -646,6 +647,7 @@ static struct poptOption long_options[] = {
+@@ -647,6 +648,7 @@ static struct poptOption long_options[] = {
{"omit-link-times", 'J', POPT_ARG_VAL, &omit_link_times, 1, 0, 0 },
{"no-omit-link-times",0, POPT_ARG_VAL, &omit_link_times, 0, 0, 0 },
{"no-J", 0, POPT_ARG_VAL, &omit_link_times, 0, 0, 0 },
{"modify-window", '@', POPT_ARG_INT, &modify_window, OPT_MODIFY_WINDOW, 0, 0 },
{"super", 0, POPT_ARG_VAL, &am_root, 2, 0, 0 },
{"no-super", 0, POPT_ARG_VAL, &am_root, 0, 0, 0 },
-@@ -2302,7 +2304,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2319,7 +2321,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
parse_filter_str(&filter_list, backup_dir_buf, rule_template(0), 0);
}
omit_dir_times = -1; /* Implied, so avoid -O to sender. */
if (stdout_format) {
-@@ -2815,6 +2817,8 @@ void server_options(char **args, int *argc_p)
+@@ -2835,6 +2837,8 @@ void server_options(char **args, int *argc_p)
args[ac++] = "--size-only";
if (do_stats)
args[ac++] = "--stats";
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
--sparse, -S turn sequences of nulls into sparse blocks
-@@ -1654,6 +1655,11 @@ expand it.
+@@ -1656,6 +1657,11 @@ expand it.
This tells rsync to omit symlinks when it is preserving modification,
access, and create times.
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
size_t bwlimit_writemax = 0;
int ignore_existing = 0;
int ignore_non_existing = 0;
-@@ -773,6 +774,7 @@ static struct poptOption long_options[] = {
+@@ -774,6 +775,7 @@ static struct poptOption long_options[] = {
{"itemize-changes", 'i', POPT_ARG_NONE, 0, 'i', 0, 0 },
{"no-itemize-changes",0, POPT_ARG_VAL, &itemize_changes, 0, 0, 0 },
{"no-i", 0, POPT_ARG_VAL, &itemize_changes, 0, 0, 0 },
TODO: the configure changes should abort if the user requests --enable-slp
and we can't honor that request.
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/main.c b/main.c
--- a/main.c
+++ b/main.c
-@@ -1411,6 +1411,22 @@ static int start_client(int argc, char *argv[])
+@@ -1400,6 +1400,22 @@ static int start_client(int argc, char *argv[])
if (!read_batch) { /* for read_batch, NO source is specified */
char *path = check_for_hostspec(argv[0], &shell_machine, &rsync_port);
diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md
--- a/rsyncd.conf.5.md
+++ b/rsyncd.conf.5.md
-@@ -138,6 +138,21 @@ a literal % into a value is to use %%.
+@@ -120,6 +120,21 @@ parameters:
You can override the default backlog value when the daemon listens for
connections. It defaults to 5.
+ 65535, then 65535 is used (which is a limitation of SLP). Using 3600
+ (one hour) is a good number if you tend to change your configuration.
+
- ## MODULE PARAMETERS
-
- After the global parameters you should define a number of modules, each module
-@@ -1204,6 +1219,7 @@ A more sophisticated example would be:
+ You may also include any [MODULE PARAMETERS](#) in the global part of the
+ config file, in which case the supplied value will override the default for
+ that parameter.
+@@ -1208,6 +1223,7 @@ A more sophisticated example would be:
> max connections = 4
> syslog facility = local5
> pid file = /var/run/rsyncd.pid
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/syscall.c b/syscall.c
--- a/syscall.c
+++ b/syscall.c
-- Matt McCutchen <hashproduct@gmail.com>
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
/**
* If 1, send the whole file as literal data rather than trying to
-@@ -776,6 +777,7 @@ static struct poptOption long_options[] = {
+@@ -777,6 +778,7 @@ static struct poptOption long_options[] = {
{"bwlimit", 0, POPT_ARG_STRING, &bwlimit_arg, OPT_BWLIMIT, 0, 0 },
{"no-bwlimit", 0, POPT_ARG_VAL, &bwlimit, 0, 0, 0 },
{"backup", 'b', POPT_ARG_VAL, &make_backups, 1, 0, 0 },
{"no-backup", 0, POPT_ARG_VAL, &make_backups, 0, 0, 0 },
{"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
{"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
-@@ -2818,6 +2820,8 @@ void server_options(char **args, int *argc_p)
+@@ -2838,6 +2840,8 @@ void server_options(char **args, int *argc_p)
} else {
if (skip_compress)
args[ac++] = safe_arg("--skip-compress", skip_compress);
--del an alias for --delete-during
--delete delete extraneous files from dest dirs
--delete-before receiver deletes before xfer, not during
-@@ -1891,6 +1892,17 @@ expand it.
+@@ -1893,6 +1894,17 @@ expand it.
not remove a file the receiver just verified, such as when the user
accidentally makes the source and destination directory the same path.
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
diff --git a/main.c b/main.c
--- a/main.c
+++ b/main.c
-@@ -189,7 +189,7 @@ int shell_exec(const char *cmd)
+@@ -191,7 +191,7 @@ int shell_exec(const char *cmd)
}
/* Wait for a process to exit, calling io_flush while waiting. */
char *early_input_file = NULL;
char *rsync_path = RSYNC_PATH;
char *backup_dir = NULL;
-@@ -688,6 +691,7 @@ static struct poptOption long_options[] = {
+@@ -689,6 +692,7 @@ static struct poptOption long_options[] = {
{"chmod", 0, POPT_ARG_STRING, 0, OPT_CHMOD, 0, 0 },
{"ignore-times", 'I', POPT_ARG_NONE, &ignore_times, 0, 0, 0 },
{"size-only", 0, POPT_ARG_NONE, &size_only, 0, 0, 0 },
{"one-file-system", 'x', POPT_ARG_NONE, 0, 'x', 0, 0 },
{"no-one-file-system",0, POPT_ARG_VAL, &one_file_system, 0, 0, 0 },
{"no-x", 0, POPT_ARG_VAL, &one_file_system, 0, 0, 0 },
-@@ -828,6 +832,8 @@ static struct poptOption long_options[] = {
+@@ -829,6 +833,8 @@ static struct poptOption long_options[] = {
{"early-input", 0, POPT_ARG_STRING, &early_input_file, 0, 0, 0 },
{"blocking-io", 0, POPT_ARG_VAL, &blocking_io, 1, 0, 0 },
{"no-blocking-io", 0, POPT_ARG_VAL, &blocking_io, 0, 0, 0 },
{"outbuf", 0, POPT_ARG_STRING, &outbuf_mode, 0, 0, 0 },
{"remote-option", 'M', POPT_ARG_STRING, 0, 'M', 0, 0 },
{"protocol", 0, POPT_ARG_INT, &protocol_version, 0, 0, 0 },
-@@ -2425,6 +2431,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2442,6 +2448,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
}
if (files_from) {
char *h, *p;
int q;
-@@ -2830,6 +2846,25 @@ void server_options(char **args, int *argc_p)
+@@ -2850,6 +2866,25 @@ void server_options(char **args, int *argc_p)
else if (missing_args == 1 && !am_sender)
args[ac++] = "--ignore-missing-args";
--protocol=NUM force an older protocol version to be used
--iconv=CONVERT_SPEC request charset conversion of filenames
--checksum-seed=NUM set block/file checksum seed (advanced)
-@@ -3710,6 +3713,36 @@ expand it.
+@@ -3712,6 +3715,36 @@ expand it.
[`--write-batch`](#opt). If _FILE_ is `-`, the batch data will be read
from standard input. See the "BATCH MODE" section for details.
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/fileio.c b/fileio.c
--- a/fileio.c
+++ b/fileio.c
OFF_T preallocated_len = 0;
-@@ -149,7 +150,7 @@ int write_file(int f, int use_seek, OFF_T offset, const char *buf, int len)
+@@ -153,7 +154,7 @@ int write_file(int f, int use_seek, OFF_T offset, const char *buf, int len)
while (len > 0) {
int r1;
if (sparse_files > 0) {
int preallocate_files = 0;
int do_compression = 0;
int do_compression_level = CLVL_NOT_SPECIFIED;
-@@ -701,6 +702,7 @@ static struct poptOption long_options[] = {
+@@ -702,6 +703,7 @@ static struct poptOption long_options[] = {
{"sparse", 'S', POPT_ARG_VAL, &sparse_files, 1, 0, 0 },
{"no-sparse", 0, POPT_ARG_VAL, &sparse_files, 0, 0, 0 },
{"no-S", 0, POPT_ARG_VAL, &sparse_files, 0, 0, 0 },
{"preallocate", 0, POPT_ARG_NONE, &preallocate_files, 0, 0, 0},
{"inplace", 0, POPT_ARG_VAL, &inplace, 1, 0, 0 },
{"no-inplace", 0, POPT_ARG_VAL, &inplace, 0, 0, 0 },
-@@ -2750,6 +2752,12 @@ void server_options(char **args, int *argc_p)
+@@ -2770,6 +2772,12 @@ void server_options(char **args, int *argc_p)
args[ac++] = arg;
}
--preallocate allocate dest files before writing them
--dry-run, -n perform a trial run with no changes made
--whole-file, -W copy files whole (w/o delta-xfer algorithm)
-@@ -1728,6 +1729,18 @@ expand it.
+@@ -1730,6 +1731,18 @@ expand it.
(as opposed to allocated sequences of null bytes) if the kernel version and
filesystem type support creating holes in the allocated data.
./configure (optional if already run)
make
-based-on: 6b5ae825db985e9d1c98576651b50c8e490ddb97
+based-on: 9a06b2edb0ea1a226bcc642682c07bacd2ea47d3
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
-@@ -210,6 +210,7 @@ int logfile_format_has_i = 0;
+@@ -211,6 +211,7 @@ int logfile_format_has_i = 0;
int logfile_format_has_o_or_i = 0;
int always_checksum = 0;
int list_only = 0;
#define MAX_BATCH_NAME_LEN 256 /* Must be less than MAXPATHLEN-13 */
char *batch_name = NULL;
-@@ -812,6 +813,7 @@ static struct poptOption long_options[] = {
+@@ -813,6 +814,7 @@ static struct poptOption long_options[] = {
{"temp-dir", 'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
{"iconv", 0, POPT_ARG_STRING, &iconv_opt, 0, 0, 0 },
{"no-iconv", 0, POPT_ARG_NONE, 0, OPT_NO_ICONV, 0, 0 },
{"ipv4", '4', POPT_ARG_VAL, &default_af_hint, AF_INET, 0, 0 },
{"ipv6", '6', POPT_ARG_VAL, &default_af_hint, AF_INET6, 0, 0 },
{"8-bit-output", '8', POPT_ARG_VAL, &allow_8bit_chars, 1, 0, 0 },
-@@ -2471,6 +2473,24 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2488,6 +2490,24 @@ int parse_arguments(int *argc_p, const char ***argv_p)
}
}
if (trust_sender || am_server || read_batch)
trust_sender_args = trust_sender_filter = 1;
else if (old_style_args || filesfrom_host != NULL)
-@@ -2936,6 +2956,12 @@ void server_options(char **args, int *argc_p)
+@@ -2956,6 +2976,12 @@ void server_options(char **args, int *argc_p)
if (relative_paths && !implied_dirs && (!am_sender || protocol_version >= 30))
args[ac++] = "--no-implied-dirs";
--checksum-seed=NUM set block/file checksum seed (advanced)
--ipv4, -4 prefer IPv4
--ipv6, -6 prefer IPv6
-@@ -3752,6 +3753,22 @@ expand it.
+@@ -3754,6 +3755,22 @@ expand it.
free to specify just the local charset for a daemon transfer (e.g.
`--iconv=utf8`).