From: Wayne Davison Date: Fri, 24 Jul 2020 19:42:29 +0000 (-0700) Subject: Fix merge conflicts. X-Git-Tag: v3.2.3pre1~6 X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=c8f4d33b78fbcecc0887634e839d1ffe4bb65106;p=rsync-patches.git Fix merge conflicts. --- diff --git a/db.diff b/db.diff index d133209..cd7a0e4 100644 --- a/db.diff +++ b/db.diff @@ -21,7 +21,7 @@ To use this patch, run these commands for a successful build: ./configure make -based-on: 974f49e22ac9f62fcfd750768d0835b900524578 +based-on: c3cf174e5ed52e709ecdfd65c7d5da34c7574b96 diff --git a/.gitignore b/.gitignore --- a/.gitignore +++ b/.gitignore @@ -2435,10 +2435,10 @@ diff --git a/main.c b/main.c extern int preserve_hard_links; extern int protocol_version; +extern int always_checksum; + extern int mkpath_dest_arg; extern int file_total; extern int recurse; - extern int xfer_dirs; -@@ -92,6 +94,7 @@ extern char *logfile_format; +@@ -93,6 +95,7 @@ extern char *logfile_format; extern char *filesfrom_host; extern char *partial_dir; extern char *rsync_path; @@ -2446,7 +2446,7 @@ diff --git a/main.c b/main.c extern char *shell_cmd; extern char *password_file; extern char *backup_dir; -@@ -1201,6 +1204,9 @@ void start_server(int f_in, int f_out, int argc, char *argv[]) +@@ -1219,6 +1222,9 @@ void start_server(int f_in, int f_out, int argc, char *argv[]) if (am_daemon && io_timeout && protocol_version >= 31) send_msg_int(MSG_IO_TIMEOUT, io_timeout); @@ -2456,7 +2456,7 @@ diff --git a/main.c b/main.c if (am_sender) { keep_dirlinks = 0; /* Must be disabled on the sender. */ if (need_messages_from_generator) -@@ -1484,6 +1490,9 @@ static int start_client(int argc, char *argv[]) +@@ -1502,6 +1508,9 @@ static int start_client(int argc, char *argv[]) else env_port = rsync_port; @@ -2485,7 +2485,7 @@ diff --git a/options.c b/options.c int eol_nulls = 0; int protect_args = -1; int human_readable = 1; -@@ -107,6 +109,9 @@ int recurse = 0; +@@ -108,6 +110,9 @@ int mkpath_dest_arg = 0; int allow_inc_recurse = 1; int xfer_dirs = -1; int am_daemon = 0; @@ -2495,7 +2495,7 @@ diff --git a/options.c b/options.c int connect_timeout = 0; int keep_partial = 0; int safe_symlinks = 0; -@@ -289,6 +294,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = { +@@ -290,6 +295,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = { DEBUG_WORD(CHDIR, W_CLI|W_SRV, "Debug when the current directory changes"), DEBUG_WORD(CONNECT, W_CLI, "Debug connection events (levels 1-2)"), DEBUG_WORD(CMD, W_CLI, "Debug commands+options that are issued (levels 1-2)"), @@ -2503,7 +2503,7 @@ diff --git a/options.c b/options.c DEBUG_WORD(DEL, W_REC, "Debug delete actions (levels 1-3)"), DEBUG_WORD(DELTASUM, W_SND|W_REC, "Debug delta-transfer checksumming (levels 1-4)"), DEBUG_WORD(DUP, W_REC, "Debug weeding of duplicate names"), -@@ -676,6 +682,16 @@ static void print_info_flags(enum logcode f) +@@ -682,6 +688,16 @@ static void print_info_flags(enum logcode f) #endif "crtimes", @@ -2520,7 +2520,7 @@ diff --git a/options.c b/options.c "*Optimizations", #ifndef HAVE_SIMD -@@ -789,6 +805,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM, +@@ -795,6 +811,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, @@ -2528,7 +2528,7 @@ diff --git a/options.c b/options.c OPT_USERMAP, OPT_GROUPMAP, OPT_CHOWN, OPT_BWLIMIT, OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS, OPT_STOP_AFTER, OPT_STOP_AT, -@@ -944,6 +961,10 @@ static struct poptOption long_options[] = { +@@ -950,6 +967,10 @@ 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 }, @@ -2539,7 +2539,7 @@ diff --git a/options.c b/options.c {"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 }, -@@ -1038,6 +1059,9 @@ static struct poptOption long_options[] = { +@@ -1046,6 +1067,9 @@ static struct poptOption long_options[] = { {"dparam", 0, POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 }, {"detach", 0, POPT_ARG_NONE, 0, OPT_DAEMON, 0, 0 }, {"no-detach", 0, POPT_ARG_NONE, 0, OPT_DAEMON, 0, 0 }, @@ -2549,7 +2549,7 @@ diff --git a/options.c b/options.c {0,0,0,0, 0, 0, 0} }; -@@ -1078,6 +1102,39 @@ static struct poptOption long_daemon_options[] = { +@@ -1086,6 +1110,39 @@ static struct poptOption long_daemon_options[] = { {0,0,0,0, 0, 0, 0} }; @@ -2589,7 +2589,7 @@ diff --git a/options.c b/options.c static char err_buf[200]; -@@ -1203,6 +1260,8 @@ static void set_refuse_options(void) +@@ -1211,6 +1268,8 @@ static void set_refuse_options(void) parse_one_refuse_match(0, "iconv", list_end); #endif parse_one_refuse_match(0, "log-file*", list_end); @@ -2598,7 +2598,7 @@ diff --git a/options.c b/options.c } #ifndef SUPPORT_ATIMES -@@ -1510,6 +1569,102 @@ static void create_refuse_error(int which) +@@ -1518,6 +1577,102 @@ static void create_refuse_error(int which) snprintf(err_buf + n, sizeof err_buf - n, " (-%c)\n", op->shortName); } @@ -2701,7 +2701,7 @@ diff --git a/options.c b/options.c /* This is used to make sure that --daemon & --server cannot be aliased to * something else. These options have always disabled popt aliases for the * parsing of a daemon or server command-line, but we have to make sure that -@@ -1566,6 +1721,12 @@ int parse_arguments(int *argc_p, const char ***argv_p) +@@ -1574,6 +1729,12 @@ int parse_arguments(int *argc_p, const char ***argv_p) return 0; } @@ -2714,7 +2714,7 @@ diff --git a/options.c b/options.c set_refuse_options(); #ifdef ICONV_OPTION -@@ -1684,6 +1845,12 @@ int parse_arguments(int *argc_p, const char ***argv_p) +@@ -1692,6 +1853,12 @@ int parse_arguments(int *argc_p, const char ***argv_p) am_daemon = 1; return 1; @@ -2727,7 +2727,7 @@ diff --git a/options.c b/options.c case OPT_MODIFY_WINDOW: /* The value has already been set by popt, but * we need to remember that we're using a -@@ -1756,6 +1923,10 @@ int parse_arguments(int *argc_p, const char ***argv_p) +@@ -1764,6 +1931,10 @@ int parse_arguments(int *argc_p, const char ***argv_p) preserve_devices = preserve_specials = 0; break; @@ -2837,7 +2837,7 @@ diff --git a/receiver.c b/receiver.c diff --git a/rsync.1.md b/rsync.1.md --- a/rsync.1.md +++ b/rsync.1.md -@@ -383,6 +383,9 @@ detailed description below for a complete description. +@@ -384,6 +384,9 @@ detailed description below for a complete description. --dry-run, -n perform a trial run with no changes made --whole-file, -W copy files whole (w/o delta-xfer algorithm) --checksum-choice=STR choose the checksum algorithm (aka --cc) diff --git a/detect-renamed.diff b/detect-renamed.diff index 0a383f4..5df0843 100644 --- a/detect-renamed.diff +++ b/detect-renamed.diff @@ -38,7 +38,7 @@ TODO: a file that can't use it, while missing out on giving it to a file that could use it. -based-on: 194cee671d5e178f20c4494f41911fa8db942935 +based-on: c3cf174e5ed52e709ecdfd65c7d5da34c7574b96 diff --git a/backup.c b/backup.c --- a/backup.c +++ b/backup.c @@ -62,7 +62,7 @@ diff --git a/compat.c b/compat.c extern int protect_args; extern int preserve_uid; extern int preserve_gid; -@@ -156,6 +157,7 @@ void set_allow_inc_recurse(void) +@@ -159,6 +160,7 @@ void set_allow_inc_recurse(void) allow_inc_recurse = 0; else if (!am_sender && (delete_before || delete_after @@ -132,7 +132,7 @@ diff --git a/delete.c b/delete.c diff --git a/flist.c b/flist.c --- a/flist.c +++ b/flist.c -@@ -63,6 +63,7 @@ extern int non_perishable_cnt; +@@ -64,6 +64,7 @@ extern int non_perishable_cnt; extern int prune_empty_dirs; extern int copy_links; extern int copy_unsafe_links; @@ -140,7 +140,7 @@ diff --git a/flist.c b/flist.c extern int protocol_version; extern int sanitize_paths; extern int munge_symlinks; -@@ -129,6 +130,8 @@ static int64 tmp_dev = -1, tmp_ino; +@@ -130,6 +131,8 @@ static int64 tmp_dev = -1, tmp_ino; #endif static char tmp_sum[MAX_DIGEST_LEN]; @@ -149,7 +149,7 @@ diff --git a/flist.c b/flist.c static char empty_sum[MAX_DIGEST_LEN]; static int flist_count_offset; /* for --delete --progress */ static int show_filelist_progress; -@@ -275,6 +278,45 @@ static inline int is_excluded(const char *fname, int is_dir, int filter_level) +@@ -277,6 +280,45 @@ static inline int is_excluded(const char *fname, int is_dir, int filter_level) return name_is_excluded(fname, is_dir ? NAME_IS_DIR : NAME_IS_FILE, filter_level); } @@ -195,7 +195,7 @@ diff --git a/flist.c b/flist.c static void send_directory(int f, struct file_list *flist, char *fbuf, int len, int flags); -@@ -2623,6 +2665,23 @@ struct file_list *recv_file_list(int f, int dir_ndx) +@@ -2674,6 +2716,23 @@ struct file_list *recv_file_list(int f, int dir_ndx) * for a non-relative transfer in recv_file_entry(). */ flist_sort_and_clean(flist, relative_paths); @@ -474,7 +474,7 @@ diff --git a/generator.c b/generator.c static inline int mtime_differs(STRUCT_STAT *stp, struct file_struct *file) { #ifdef ST_MTIME_NSEC -@@ -1164,6 +1305,7 @@ static void list_file_entry(struct file_struct *f) +@@ -1187,6 +1328,7 @@ static void list_file_entry(struct file_struct *f) } } @@ -482,7 +482,7 @@ diff --git a/generator.c b/generator.c static int phase = 0; static int dflt_perms; -@@ -1294,7 +1436,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, +@@ -1323,7 +1465,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, && do_stat(dn, &sx.st) < 0) { if (dry_run) goto parent_is_dry_missing; @@ -491,7 +491,7 @@ diff --git a/generator.c b/generator.c rsyserr(FERROR_XFER, errno, "recv_generator: mkdir %s failed", full_fname(dn)); -@@ -1430,7 +1572,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, +@@ -1459,7 +1601,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, } if (real_ret != 0 && do_mkdir(fname,file->mode|added_perms) < 0 && errno != EEXIST) { if (!relative_paths || errno != ENOENT @@ -500,7 +500,7 @@ diff --git a/generator.c b/generator.c || (do_mkdir(fname, file->mode|added_perms) < 0 && errno != EEXIST)) { rsyserr(FERROR_XFER, errno, "recv_generator: mkdir %s failed", -@@ -1478,9 +1620,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, +@@ -1507,9 +1649,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, } else if (delete_during && f_out != -1 && !phase && !(file->flags & FLAG_MISSING_DIR)) { @@ -516,7 +516,7 @@ diff --git a/generator.c b/generator.c change_local_filter_dir(fname, strlen(fname), F_DEPTH(file)); } prior_dir_file = file; -@@ -1757,8 +1902,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, +@@ -1786,8 +1931,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, goto cleanup; } #endif @@ -532,7 +532,7 @@ diff --git a/generator.c b/generator.c rsyserr(FERROR_XFER, stat_errno, "recv_generator: failed to stat %s", full_fname(fname)); goto cleanup; -@@ -2222,6 +2373,12 @@ void generate_files(int f_out, const char *local_name) +@@ -2251,6 +2402,12 @@ void generate_files(int f_out, const char *local_name) if (DEBUG_GTE(GENR, 1)) rprintf(FINFO, "generator starting pid=%d\n", (int)getpid()); @@ -545,7 +545,7 @@ diff --git a/generator.c b/generator.c if (delete_before && !solo_file && cur_flist->used > 0) do_delete_pass(); if (delete_during == 2) { -@@ -2230,7 +2387,7 @@ void generate_files(int f_out, const char *local_name) +@@ -2259,7 +2416,7 @@ void generate_files(int f_out, const char *local_name) } info_levels[INFO_FLIST] = info_levels[INFO_PROGRESS] = 0; @@ -554,7 +554,7 @@ diff --git a/generator.c b/generator.c whole_file = 0; if (DEBUG_GTE(FLIST, 1)) { rprintf(FINFO, "delta-transmission %s\n", -@@ -2266,7 +2423,7 @@ void generate_files(int f_out, const char *local_name) +@@ -2295,7 +2452,7 @@ void generate_files(int f_out, const char *local_name) dirdev = MAKEDEV(DEV_MAJOR(devp), DEV_MINOR(devp)); } else dirdev = MAKEDEV(0, 0); @@ -563,7 +563,7 @@ diff --git a/generator.c b/generator.c } else change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp)); } -@@ -2313,7 +2470,21 @@ void generate_files(int f_out, const char *local_name) +@@ -2342,7 +2499,21 @@ void generate_files(int f_out, const char *local_name) } while ((cur_flist = cur_flist->next) != NULL); if (delete_during) @@ -589,7 +589,7 @@ diff --git a/generator.c b/generator.c diff --git a/options.c b/options.c --- a/options.c +++ b/options.c -@@ -87,6 +87,7 @@ int am_server = 0; +@@ -88,6 +88,7 @@ int am_server = 0; int am_sender = 0; int am_starting_up = 1; int relative_paths = -1; @@ -597,7 +597,7 @@ diff --git a/options.c b/options.c int implied_dirs = 1; int missing_args = 0; /* 0 = FERROR_XFER, 1 = ignore, 2 = delete */ int numeric_ids = 0; -@@ -932,6 +933,7 @@ static struct poptOption long_options[] = { +@@ -954,6 +955,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 }, @@ -605,7 +605,7 @@ diff --git a/options.c b/options.c {"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 }, -@@ -2344,7 +2346,7 @@ int parse_arguments(int *argc_p, const char ***argv_p) +@@ -2561,7 +2563,7 @@ int parse_arguments(int *argc_p, const char ***argv_p) inplace = 1; } @@ -614,7 +614,7 @@ diff --git a/options.c b/options.c partial_dir = tmp_partialdir; if (inplace) { -@@ -2353,6 +2355,7 @@ int parse_arguments(int *argc_p, const char ***argv_p) +@@ -2570,6 +2572,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", @@ -622,7 +622,7 @@ diff --git a/options.c b/options.c delay_updates ? "delay-updates" : "partial-dir"); return 0; } -@@ -2755,6 +2758,8 @@ void server_options(char **args, int *argc_p) +@@ -2982,6 +2985,8 @@ void server_options(char **args, int *argc_p) args[ac++] = "--super"; if (size_only) args[ac++] = "--size-only"; @@ -646,7 +646,7 @@ diff --git a/receiver.c b/receiver.c diff --git a/rsync.1.md b/rsync.1.md --- a/rsync.1.md +++ b/rsync.1.md -@@ -419,6 +419,7 @@ detailed description below for a complete description. +@@ -421,6 +421,7 @@ detailed description below for a complete description. --modify-window=NUM, -@ set the accuracy for mod-time comparisons --temp-dir=DIR, -T create temporary files in directory DIR --fuzzy, -y find similar file for basis if no dest file @@ -654,7 +654,7 @@ diff --git a/rsync.1.md b/rsync.1.md --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 -@@ -2198,6 +2199,22 @@ your home directory (remove the '=' for that). +@@ -2237,6 +2238,22 @@ your home directory (remove the '=' for that). fuzzy-match files, so either use `--delete-after` or specify some filename exclusions if you need to prevent this. @@ -680,7 +680,7 @@ diff --git a/rsync.1.md b/rsync.1.md diff --git a/rsync.h b/rsync.h --- a/rsync.h +++ b/rsync.h -@@ -270,7 +270,7 @@ enum msgcode { +@@ -272,7 +272,7 @@ enum msgcode { #define NDX_DEL_STATS -3 #define NDX_FLIST_OFFSET -101 @@ -689,7 +689,7 @@ diff --git a/rsync.h b/rsync.h #define DEL_NO_UID_WRITE (1<<0) /* file/dir has our uid w/o write perm */ #define DEL_RECURSE (1<<1) /* if dir, delete all contents */ #define DEL_DIR_IS_EMPTY (1<<2) /* internal delete_FUNCTIONS use only */ -@@ -280,6 +280,7 @@ enum msgcode { +@@ -282,6 +282,7 @@ enum msgcode { #define DEL_FOR_DEVICE (1<<6) /* making room for a replacement device */ #define DEL_FOR_SPECIAL (1<<7) /* making room for a replacement special */ #define DEL_FOR_BACKUP (1<<8) /* the delete is for a backup operation */ diff --git a/fileflags.diff b/fileflags.diff index b2ea56a..5a4c814 100644 --- a/fileflags.diff +++ b/fileflags.diff @@ -7,7 +7,7 @@ To use this patch, run these commands for a successful build: ./configure (optional if already run) make -based-on: 974f49e22ac9f62fcfd750768d0835b900524578 +based-on: c3cf174e5ed52e709ecdfd65c7d5da34c7574b96 diff --git a/compat.c b/compat.c --- a/compat.c +++ b/compat.c @@ -331,15 +331,15 @@ diff --git a/main.c b/main.c extern int dry_run; extern int list_only; -@@ -57,6 +60,7 @@ extern int copy_unsafe_links; - extern int keep_dirlinks; - extern int preserve_hard_links; - extern int protocol_version; +@@ -48,6 +51,7 @@ extern int called_from_signal_handler; + extern int need_messages_from_generator; + extern int kluge_around_eof; + extern int got_xfer_error; +extern int force_change; - extern int file_total; - extern int recurse; - extern int xfer_dirs; -@@ -947,6 +951,22 @@ static int do_recv(int f_in, int f_out, char *local_name) + extern int msgs2stderr; + extern int module_id; + extern int read_only; +@@ -965,6 +969,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; @@ -374,14 +374,14 @@ diff --git a/options.c b/options.c int preserve_devices = 0; int preserve_specials = 0; @@ -94,6 +95,7 @@ int numeric_ids = 0; - int msgs2stderr = 0; + int msgs2stderr = 2; /* Default: send errors to stderr for local & remote-shell transfers */ int allow_8bit_chars = 0; int force_delete = 0; +int force_change = 0; int io_timeout = 0; int prune_empty_dirs = 0; int use_qsort = 0; -@@ -676,6 +678,11 @@ static void print_info_flags(enum logcode f) +@@ -682,6 +684,11 @@ static void print_info_flags(enum logcode f) #endif "crtimes", @@ -393,7 +393,7 @@ diff --git a/options.c b/options.c "*Optimizations", #ifndef HAVE_SIMD -@@ -829,6 +836,8 @@ static struct poptOption long_options[] = { +@@ -835,6 +842,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 }, @@ -402,7 +402,7 @@ diff --git a/options.c b/options.c {"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 }, -@@ -926,6 +935,12 @@ static struct poptOption long_options[] = { +@@ -932,6 +941,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 }, @@ -415,7 +415,7 @@ diff --git a/options.c b/options.c {"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 }, -@@ -1223,6 +1238,14 @@ static void set_refuse_options(void) +@@ -1231,6 +1246,14 @@ static void set_refuse_options(void) #ifndef SUPPORT_CRTIMES parse_one_refuse_match(0, "crtimes", list_end); #endif @@ -430,7 +430,7 @@ diff --git a/options.c b/options.c /* Now we use the descrip values to actually mark the options for refusal. */ for (op = long_options; op != list_end; op++) { -@@ -2860,6 +2883,9 @@ void server_options(char **args, int *argc_p) +@@ -2868,6 +2891,9 @@ void server_options(char **args, int *argc_p) if (xfer_dirs && !recurse && delete_mode && am_sender) args[ac++] = "--no-r"; @@ -440,7 +440,7 @@ diff --git a/options.c b/options.c if (do_compression && do_compression_level != CLVL_NOT_SPECIFIED) { if (asprintf(&arg, "--compress-level=%d", do_compression_level) < 0) goto oom; -@@ -2963,6 +2989,16 @@ void server_options(char **args, int *argc_p) +@@ -2976,6 +3002,16 @@ void server_options(char **args, int *argc_p) args[ac++] = "--delete-excluded"; if (force_delete) args[ac++] = "--force"; @@ -460,7 +460,7 @@ diff --git a/options.c b/options.c diff --git a/rsync.1.md b/rsync.1.md --- a/rsync.1.md +++ b/rsync.1.md -@@ -360,6 +360,7 @@ detailed description below for a complete description. +@@ -361,6 +361,7 @@ detailed description below for a complete description. --keep-dirlinks, -K treat symlinked dir on receiver as dir --hard-links, -H preserve hard links --perms, -p preserve permissions @@ -468,7 +468,7 @@ diff --git a/rsync.1.md b/rsync.1.md --executability, -E preserve executability --chmod=CHMOD affect file and/or directory permissions --acls, -A preserve ACLs (implies --perms) -@@ -400,7 +401,10 @@ detailed description below for a complete description. +@@ -401,7 +402,10 @@ detailed description below for a complete description. --ignore-missing-args ignore missing source args without error --delete-missing-args delete missing source args from destination --ignore-errors delete even if there are I/O errors @@ -480,7 +480,7 @@ diff --git a/rsync.1.md b/rsync.1.md --max-delete=NUM don't delete more than NUM files --max-size=SIZE don't transfer any file larger than SIZE --min-size=SIZE don't transfer any file smaller than SIZE -@@ -703,6 +707,8 @@ your home directory (remove the '=' for that). +@@ -708,6 +712,8 @@ your home directory (remove the '=' for that). Note that `-a` **does not preserve hardlinks**, because finding multiply-linked files is expensive. You must separately specify `-H`. @@ -489,7 +489,7 @@ diff --git a/rsync.1.md b/rsync.1.md 0. `--no-OPTION` -@@ -1041,7 +1047,7 @@ your home directory (remove the '=' for that). +@@ -1066,7 +1072,7 @@ your home directory (remove the '=' for that). Without this option, if the sending side has replaced a directory with a symlink to a directory, the receiving side will delete anything that is in the way of the new symlink, including a directory hierarchy (as long as @@ -498,7 +498,7 @@ diff --git a/rsync.1.md b/rsync.1.md See also `--keep-dirlinks` for an analogous option for the receiving side. -@@ -1227,6 +1233,29 @@ your home directory (remove the '=' for that). +@@ -1252,6 +1258,29 @@ your home directory (remove the '=' for that). those used by `--fake-super`) unless you repeat the option (e.g. `-XX`). This "copy all xattrs" mode cannot be used with `--fake-super`. @@ -528,7 +528,7 @@ diff --git a/rsync.1.md b/rsync.1.md 0. `--chmod=CHMOD` This option tells rsync to apply one or more comma-separated "chmod" modes -@@ -1694,7 +1723,7 @@ your home directory (remove the '=' for that). +@@ -1719,7 +1748,7 @@ your home directory (remove the '=' for that). 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 directory, it will only be @@ -537,7 +537,7 @@ diff --git a/rsync.1.md b/rsync.1.md that, this option is independent of any other type of delete processing. The missing source files are represented by special file-list entries which -@@ -1705,15 +1734,16 @@ your home directory (remove the '=' for that). +@@ -1730,15 +1759,16 @@ your home directory (remove the '=' for that). Tells `--delete` to go ahead and delete files even when there are I/O errors. @@ -558,7 +558,7 @@ diff --git a/rsync.1.md b/rsync.1.md 0. `--max-delete=NUM` -@@ -2626,7 +2656,7 @@ your home directory (remove the '=' for that). +@@ -2651,7 +2681,7 @@ your home directory (remove the '=' for that). output of other verbose messages). The "%i" escape has a cryptic output that is 11 letters long. The general