dovecot-2.0: dsync backup: Added -R parameter to reverse backup ...

dovecot at dovecot.org dovecot at dovecot.org
Thu Jul 1 20:06:44 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/c36dbec5cb9f
changeset: 11682:c36dbec5cb9f
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Jul 01 18:06:40 2010 +0100
description:
dsync backup: Added -R parameter to reverse backup direction.

diffstat:

 src/dsync/dsync.c |  22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diffs (68 lines):

diff -r 28639e01a479 -r c36dbec5cb9f src/dsync/dsync.c
--- a/src/dsync/dsync.c	Thu Jul 01 18:02:06 2010 +0100
+++ b/src/dsync/dsync.c	Thu Jul 01 18:06:40 2010 +0100
@@ -123,7 +123,7 @@
 usage(void)
 {
 	fprintf(stderr,
-"usage: dsync [-C <alt char>] [-m <mailbox>] [-u <user>] [-frv]\n"
+"usage: dsync [-C <alt char>] [-m <mailbox>] [-u <user>] [-frRv]\n"
 "  mirror <local mail_location> | [<user>@]<host> | <remote dsync command>\n"
 );
 	exit(1);
@@ -145,17 +145,17 @@
 	struct mail_storage_service_user *service_user;
 	struct mail_storage_service_input input;
 	struct mail_user *mail_user, *mail_user2 = NULL;
-	struct dsync_worker *worker1, *worker2;
+	struct dsync_worker *worker1, *worker2, *workertmp;
 	const char *error, *username, *cmd_name, *mailbox = NULL;
 	const char *local_location = NULL, *const *remote_cmd_args = NULL;
 	bool dsync_server = FALSE, readonly = FALSE, unexpected_changes = FALSE;
-	bool dsync_debug = FALSE;
+	bool dsync_debug = FALSE, reverse_workers = FALSE;
 	char alt_char = '_';
 	int c, ret, fd_in = STDIN_FILENO, fd_out = STDOUT_FILENO;
 
 	master_service = master_service_init("dsync",
 					     MASTER_SERVICE_FLAG_STANDALONE,
-					     &argc, &argv, "+C:Dfm:ru:v");
+					     &argc, &argv, "+C:Dfm:rRu:v");
 
 	username = getenv("USER");
 	while ((c = master_getopt(master_service)) > 0) {
@@ -176,6 +176,9 @@
 		case 'r':
 			readonly = TRUE;
 			break;
+		case 'R':
+			reverse_workers = TRUE;
+			break;
 		case 'f':
 			brain_flags |= DSYNC_BRAIN_FLAG_FULL_SYNC;
 			break;
@@ -257,6 +260,11 @@
 			i_fatal("User init failed");
 
 		worker2 = dsync_worker_init_local(mail_user2, alt_char);
+		if (reverse_workers) {
+			workertmp = worker1;
+			worker1 = worker2;
+			worker2 = workertmp;
+		}
 
 		i_set_failure_prefix(t_strdup_printf("dsync(%s): ", username));
 		brain = dsync_brain_init(worker1, worker2,
@@ -280,6 +288,12 @@
 		if (readonly)
 			dsync_worker_set_readonly(worker1);
 		worker2 = dsync_worker_init_proxy_client(fd_in, fd_out);
+		if (reverse_workers) {
+			workertmp = worker1;
+			worker1 = worker2;
+			worker2 = workertmp;
+		}
+
 		brain = dsync_brain_init(worker1, worker2,
 					 mailbox, brain_flags);
 		server = NULL;


More information about the dovecot-cvs mailing list