X-Git-Url: https://mattmccutchen.net/rsync/rsync-patches.git/blobdiff_plain/c0c7984e7f6009b6ab18ad3da998a56a9c0f083d..ae306a2933c7617493d80f46d891911634ec43d0:/backup-dir-dels.diff diff --git a/backup-dir-dels.diff b/backup-dir-dels.diff index 51d8489..7c41181 100644 --- a/backup-dir-dels.diff +++ b/backup-dir-dels.diff @@ -79,7 +79,7 @@ diff --git a/backup.c b/backup.c stat_x sx; while (*fullpath == '.' && fullpath[1] == '/') { -@@ -211,7 +235,8 @@ static int keep_backup(const char *fname) +@@ -221,7 +245,8 @@ static int keep_backup(const char *fname) if (!(file = make_file(fname, NULL, NULL, 0, NO_FILTERS))) return 1; /* the file could have disappeared */ @@ -89,7 +89,7 @@ diff --git a/backup.c b/backup.c unmake_file(file); return 0; } -@@ -322,7 +347,17 @@ static int keep_backup(const char *fname) +@@ -356,7 +381,17 @@ static int keep_backup(const char *fname) /* main backup switch routine */ int make_backup(const char *fname) { @@ -111,7 +111,7 @@ diff --git a/backup.c b/backup.c diff --git a/generator.c b/generator.c --- a/generator.c +++ b/generator.c -@@ -96,6 +96,9 @@ extern uid_t our_uid; +@@ -97,6 +97,9 @@ extern uid_t our_uid; extern char *backup_dir; extern char *backup_suffix; extern int backup_suffix_len; @@ -121,7 +121,7 @@ diff --git a/generator.c b/generator.c extern struct file_list *cur_flist, *first_flist, *dir_flist; extern struct filter_list_struct daemon_filter_list; -@@ -142,10 +145,15 @@ static void handle_skipped_hlink(struct file_struct *file, int itemizing, +@@ -143,10 +146,15 @@ static void handle_skipped_hlink(struct file_struct *file, int itemizing, enum logcode code, int f_out); #endif @@ -138,7 +138,7 @@ diff --git a/generator.c b/generator.c } /* Delete a file or directory. If DEL_RECURSE is set in the flags, this will -@@ -193,9 +201,9 @@ static enum delret delete_item(char *fbuf, uint16 mode, uint16 flags) +@@ -194,9 +202,9 @@ static enum delret delete_item(char *fbuf, uint16 mode, uint16 flags) if (S_ISDIR(mode)) { what = "rmdir"; ok = do_rmdir(fbuf) == 0; @@ -157,7 +157,7 @@ diff --git a/options.c b/options.c int write_batch = 0; int read_batch = 0; int backup_dir_len = 0; -+int backup_dir_dels_len = 0; ++int backup_dir_dels_len = 0; int backup_suffix_len; +int backup_suffix_dels_len; unsigned int backup_dir_remainder; @@ -215,7 +215,7 @@ diff --git a/options.c b/options.c + if (!*backup_dir_dels) + goto options_rejected; + clean_fname(backup_dir_dels, 1); -+ if (check_filter(elp, backup_dir_dels, 1) < 0) ++ if (check_filter(elp, FLOG, backup_dir_dels, 1) < 0) + goto options_rejected; + } } @@ -236,7 +236,7 @@ diff --git a/options.c b/options.c + if (strchr(backup_suffix_dels, '/') != NULL) { + snprintf(err_buf, sizeof err_buf, + "--suffix-dels cannot contain slashes: %s\n", -+ backup_suffix_dels); ++ backup_suffix_dels); + return 0; + } if (backup_dir) { @@ -277,7 +277,7 @@ diff --git a/options.c b/options.c if (make_backups && !backup_dir) { omit_dir_times = 0; /* Implied, so avoid -O to sender. */ -@@ -1901,6 +1963,10 @@ void server_options(char **args, int *argc_p) +@@ -1915,6 +1977,10 @@ void server_options(char **args, int *argc_p) args[ac++] = "--backup-dir"; args[ac++] = backup_dir; } @@ -288,7 +288,7 @@ diff --git a/options.c b/options.c /* Only send --suffix if it specifies a non-default value. */ if (strcmp(backup_suffix, backup_dir ? "" : BACKUP_SUFFIX) != 0) { -@@ -1909,7 +1975,14 @@ void server_options(char **args, int *argc_p) +@@ -1923,7 +1989,14 @@ void server_options(char **args, int *argc_p) goto oom; args[ac++] = arg; }