X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/ba2133d6add082b059728074febdac6c520a4351..f49c837651b6e3f26043a5b7f97697ea8c8ffaee:/compat.c diff --git a/compat.c b/compat.c index e7693ee9..ed1f2a20 100644 --- a/compat.c +++ b/compat.c @@ -43,7 +43,12 @@ extern int preserve_gid; extern int preserve_hard_links; extern int need_messages_from_generator; extern int delete_mode, delete_before, delete_during, delete_after; +extern int delete_excluded; +extern int make_backups; +extern char *backup_dir, *backup_suffix; +extern char *partial_dir; extern char *dest_option; +extern struct filter_list_struct filter_list; void setup_protocol(int f_out,int f_in) { @@ -150,6 +155,23 @@ void setup_protocol(int f_out,int f_in) need_messages_from_generator = 1; } + if (make_backups && !backup_dir && delete_mode && !delete_excluded + && !am_server) { + char *rule; + if (asprintf(&rule, "P%s *%s", + !am_sender || protocol_version >= 30 ? "p" : "", + backup_suffix) < 0) + out_of_memory("setup_protocol"); + parse_rule(&filter_list, rule, 0, 0); + free(rule); + } + if (partial_dir && *partial_dir != '/' && !am_server) { + int flags = MATCHFLG_NO_PREFIXES | MATCHFLG_DIRECTORY; + if (!am_sender || protocol_version >= 30) + flags |= MATCHFLG_PERISHABLE; + parse_rule(&filter_list, partial_dir, flags, 0); + } + if (am_server) { if (!checksum_seed) checksum_seed = time(NULL);