int verbose = 0;
int quiet = 0;
int itemize_changes = 0;
+int log_before_transfer = 0;
int always_checksum = 0;
int list_only = 0;
static int daemon_opt; /* sets am_daemon after option error-reporting */
static int F_option_cnt = 0;
static int modify_window_set;
-static int refused_verbose, refused_delete, refused_archive_part;
-static int refused_partial, refused_progress;
+static int refused_delete, refused_archive_part;
+static int refused_partial, refused_progress, refused_delete_before;
static char *dest_option = NULL;
static char *max_size_arg;
static char partialdir_for_delayupdate[] = ".~tmp~";
/* These flags are set to let us easily check
* an implied option later in the code. */
switch (*shortname) {
- case 'v':
- refused_verbose = op->val;
- break;
case 'r': case 'd': case 'l': case 'p':
case 't': case 'g': case 'o': case 'D':
refused_archive_part = op->val;
case '\0':
if (wildmatch("delete", op->longName))
refused_delete = op->val;
+ else if (wildmatch("delete-before", op->longName))
+ refused_delete_before = op->val;
else if (wildmatch("partial", op->longName))
refused_partial = op->val;
else if (wildmatch("progress", op->longName))
delete_mode = delete_excluded = 0;
} else if (delete_before || delete_during || delete_after)
delete_mode = 1;
- else if (delete_mode || delete_excluded)
+ else if (delete_mode || delete_excluded) {
+ if (refused_delete_before) {
+ create_refuse_error(refused_delete_before);
+ return 0;
+ }
delete_mode = delete_before = 1;
+ }
if (delete_mode && refused_delete) {
create_refuse_error(refused_delete);
return 0;
}
- if (do_progress && !verbose && !itemize_changes) {
- if (refused_verbose) {
- create_refuse_error(refused_verbose);
- return 0;
- }
+ if (log_format) {
+ if (strstr(log_format, "%i") != NULL)
+ itemize_changes = 1;
+ if (strstr(log_format, "%b") == NULL
+ && strstr(log_format, "%c") == NULL)
+ log_before_transfer = !am_server;
+ } else if (itemize_changes) {
+ log_format = "%i %n%L";
+ log_before_transfer = !am_server;
+ }
+
+ if ((do_progress || dry_run) && !verbose && !log_before_transfer
+ && !am_server)
verbose = 1;
+
+ if (verbose && !log_format) {
+ log_format = "%n%L";
+ log_before_transfer = !am_server;
}
if (daemon_bwlimit && (!bwlimit || bwlimit > daemon_bwlimit))
* default for remote transfers, and in any case old versions
* of rsync will not understand it. */
- if (itemize_changes && am_sender)
- argstr[x++] = 'i';
if (preserve_hard_links)
argstr[x++] = 'H';
if (preserve_uid)