From: Wayne Davison Date: Sun, 12 Apr 2009 00:31:13 +0000 (-0700) Subject: The suffix must be non-empty if the backup-dir is the same as the dest X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/4e9c7fae8f6feb2fecaea811b318cf416d23dd9a The suffix must be non-empty if the backup-dir is the same as the dest dir. --- diff --git a/main.c b/main.c index 75e9a2fe..bf0bb141 100644 --- a/main.c +++ b/main.c @@ -825,10 +825,8 @@ static int do_recv(int f_in, int f_out, char *local_name) exit_cleanup(RERR_SYNTAX); if (ret) rprintf(FINFO, "Created backup_dir %s\n", backup_dir_buf); - else if (INFO_GTE(BACKUP, 1)) { - char *dir = *backup_dir_buf ? backup_dir_buf : "."; - rprintf(FINFO, "backup_dir is %s\n", dir); - } + else if (INFO_GTE(BACKUP, 1)) + rprintf(FINFO, "backup_dir is %s\n", backup_dir_buf); } io_flush(NORMAL_FLUSH); diff --git a/options.c b/options.c index 5af0a319..aed912d7 100644 --- a/options.c +++ b/options.c @@ -2008,13 +2008,21 @@ int parse_arguments(int *argc_p, const char ***argv_p) "the --backup-dir path is WAY too long.\n"); return 0; } - if (backup_dir_len && backup_dir_buf[backup_dir_len - 1] != '/') { + if (!backup_dir_len) { + backup_dir_len = -1; + backup_dir = NULL; + } else if (backup_dir_buf[backup_dir_len - 1] != '/') { backup_dir_buf[backup_dir_len++] = '/'; backup_dir_buf[backup_dir_len] = '\0'; } + } + if (backup_dir) { + /* No need for a suffix or a protect rule. */ } else if (!backup_suffix_len && (!am_server || !am_sender)) { snprintf(err_buf, sizeof err_buf, - "--suffix cannot be a null string without --backup-dir\n"); + "--suffix cannot be empty %s\n", backup_dir_len < 0 + ? "when --backup-dir is the same as the dest dir" + : "without a --backup-dir"); return 0; } else if (make_backups && delete_mode && !delete_excluded && !am_server) { snprintf(backup_dir_buf, sizeof backup_dir_buf,