int delete_before = 0;
int delete_after = 0;
int delete_excluded = 0;
+int remove_sent_files = 0;
int one_file_system = 0;
int protocol_version = PROTOCOL_VERSION;
int sparse_files = 0;
size_t bwlimit_writemax = 0;
int only_existing = 0;
int opt_ignore_existing = 0;
+int need_messages_from_generator = 0;
int max_delete = 0;
OFF_T max_size = 0;
int ignore_errors = 0;
/** Do not go into the background when run as --daemon. Good
* for debugging and required for running as a service on W32,
* or under Unix process-monitors. **/
-int no_detach = 0;
+int no_detach
+#if defined _WIN32 || defined __WIN32__
+ = 1;
+#else
+ = 0;
+#endif
int write_batch = 0;
int read_batch = 0;
rprintf(F," --rsync-path=PATH specify path to rsync on the remote machine\n");
rprintf(F," --existing only update files that already exist on receiver\n");
rprintf(F," --ignore-existing ignore files that already exist on receiving side\n");
+ rprintf(F," --remove-sent-files sent files/symlinks are removed from sending side\n");
rprintf(F," --del an alias for --delete-during\n");
rprintf(F," --delete delete files that don't exist on the sending side\n");
rprintf(F," --delete-before receiver deletes before transfer (default)\n");
{"delete-during", 0, POPT_ARG_NONE, &delete_during, 0, 0, 0 },
{"delete-after", 0, POPT_ARG_NONE, &delete_after, 0, 0, 0 },
{"delete-excluded", 0, POPT_ARG_NONE, &delete_excluded, 0, 0, 0 },
+ {"remove-sent-files",0, POPT_ARG_NONE, &remove_sent_files, 0, 0, 0 },
{"force", 0, POPT_ARG_NONE, &force_delete, 0, 0, 0 },
{"numeric-ids", 0, POPT_ARG_NONE, &numeric_ids, 0, 0, 0 },
{"filter", 'f', POPT_ARG_STRING, 0, OPT_FILTER, 0, 0 },
{"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 },
{"devices", 'D', POPT_ARG_NONE, &preserve_devices, 0, 0, 0 },
{"times", 't', POPT_ARG_NONE, &preserve_times, 0, 0, 0 },
- {"omit-dir-times", 'O', POPT_ARG_NONE, &omit_dir_times, 0, 0, 0 },
+ {"omit-dir-times", 'O', POPT_ARG_VAL, &omit_dir_times, 2, 0, 0 },
{"checksum", 'c', POPT_ARG_NONE, &always_checksum, 0, 0, 0 },
{"verbose", 'v', POPT_ARG_NONE, 0, 'v', 0, 0 },
{"quiet", 'q', POPT_ARG_NONE, 0, 'q', 0, 0 },
{"address", 0, POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 },
{"config", 0, POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 },
{"daemon", 0, POPT_ARG_NONE, 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 },
{0,0,0,0, 0, 0, 0}
};
{"ipv4", '4', POPT_ARG_VAL, &default_af_hint, AF_INET, 0, 0 },
{"ipv6", '6', POPT_ARG_VAL, &default_af_hint, AF_INET6, 0, 0 },
#endif
- {"no-detach", 0, POPT_ARG_NONE, &no_detach, 0, 0, 0 },
+ {"detach", 0, POPT_ARG_VAL, &no_detach, 0, 0, 0 },
+ {"no-detach", 0, POPT_ARG_VAL, &no_detach, 1, 0, 0 },
{"port", 0, POPT_ARG_INT, &rsync_port, 0, 0, 0 },
{"protocol", 0, POPT_ARG_INT, &protocol_version, 0, 0, 0 },
{"server", 0, POPT_ARG_NONE, &am_server, 0, 0, 0 },
return 0;
}
+ if (remove_sent_files) {
+ /* We only want to infer this refusal of --remove-sent-files
+ * via the refusal of "delete", not any of the "delete-FOO"
+ * options. */
+ if (refused_delete && am_sender) {
+ create_refuse_error(refused_delete);
+ return 0;
+ }
+ need_messages_from_generator = 1;
+ }
+
*argv = poptGetArgs(pc);
*argc = count_args(*argv);
"--suffix cannot be a null string without --backup-dir\n");
return 0;
}
+ if (make_backups && !backup_dir)
+ omit_dir_times = 1;
if (log_format) {
if (strstr(log_format, "%i") != NULL)
argstr[x++] = 'D';
if (preserve_times)
argstr[x++] = 't';
- if (omit_dir_times && am_sender)
+ if (omit_dir_times == 2 && am_sender)
argstr[x++] = 'O';
if (preserve_perms)
argstr[x++] = 'p';
if (fuzzy_basis && am_sender)
args[ac++] = "--fuzzy";
+ if (remove_sent_files)
+ args[ac++] = "--remove-sent-files";
+
*argc = ac;
return;