dovecot-2.1: Merged dsync into "doveadm dsync".

dovecot at dovecot.org dovecot at dovecot.org
Thu Dec 29 14:47:20 EET 2011


details:   http://hg.dovecot.org/dovecot-2.1/rev/4c827134997f
changeset: 13875:4c827134997f
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Dec 29 14:43:45 2011 +0200
description:
Merged dsync into "doveadm dsync".
dsync symlink is installed for backwards compatibility.

diffstat:

 .hgignore                                       |     1 -
 configure.in                                    |     2 +-
 src/Makefile.am                                 |     1 -
 src/doveadm/Makefile.am                         |     7 +
 src/doveadm/client-connection.c                 |    17 +-
 src/doveadm/doveadm-mail.c                      |    68 +-
 src/doveadm/doveadm-mail.h                      |    15 +-
 src/doveadm/doveadm-settings.c                  |     2 +
 src/doveadm/doveadm-settings.h                  |     1 +
 src/doveadm/doveadm.c                           |     3 +
 src/doveadm/dsync/Makefile.am                   |    80 +
 src/doveadm/dsync/doveadm-dsync.c               |   494 +++++
 src/doveadm/dsync/doveadm-dsync.h               |    10 +
 src/doveadm/dsync/dsync-brain-msgs-new.c        |   392 ++++
 src/doveadm/dsync/dsync-brain-msgs.c            |   537 ++++++
 src/doveadm/dsync/dsync-brain-private.h         |   144 +
 src/doveadm/dsync/dsync-brain.c                 |   917 +++++++++++
 src/doveadm/dsync/dsync-brain.h                 |    28 +
 src/doveadm/dsync/dsync-data.c                  |   146 +
 src/doveadm/dsync/dsync-data.h                  |    84 +
 src/doveadm/dsync/dsync-proxy-client.c          |  1191 ++++++++++++++
 src/doveadm/dsync/dsync-proxy-server-cmd.c      |   608 +++++++
 src/doveadm/dsync/dsync-proxy-server.c          |   205 ++
 src/doveadm/dsync/dsync-proxy-server.h          |    46 +
 src/doveadm/dsync/dsync-proxy.c                 |   412 ++++
 src/doveadm/dsync/dsync-proxy.h                 |    55 +
 src/doveadm/dsync/dsync-worker-local.c          |  1899 +++++++++++++++++++++++
 src/doveadm/dsync/dsync-worker-private.h        |   105 +
 src/doveadm/dsync/dsync-worker.c                |   285 +++
 src/doveadm/dsync/dsync-worker.h                |   164 +
 src/doveadm/dsync/test-dsync-brain-msgs.c       |   670 ++++++++
 src/doveadm/dsync/test-dsync-brain.c            |   289 +++
 src/doveadm/dsync/test-dsync-common.c           |    80 +
 src/doveadm/dsync/test-dsync-common.h           |    18 +
 src/doveadm/dsync/test-dsync-proxy-server-cmd.c |   482 +++++
 src/doveadm/dsync/test-dsync-proxy.c            |   184 ++
 src/doveadm/dsync/test-dsync-worker.c           |   481 +++++
 src/doveadm/dsync/test-dsync-worker.h           |    96 +
 src/dsync/Makefile.am                           |    88 -
 src/dsync/dsync-brain-msgs-new.c                |   392 ----
 src/dsync/dsync-brain-msgs.c                    |   537 ------
 src/dsync/dsync-brain-private.h                 |   144 -
 src/dsync/dsync-brain.c                         |   918 -----------
 src/dsync/dsync-brain.h                         |    28 -
 src/dsync/dsync-data.c                          |   146 -
 src/dsync/dsync-data.h                          |    84 -
 src/dsync/dsync-proxy-client.c                  |  1192 --------------
 src/dsync/dsync-proxy-server-cmd.c              |   609 -------
 src/dsync/dsync-proxy-server.c                  |   206 --
 src/dsync/dsync-proxy-server.h                  |    46 -
 src/dsync/dsync-proxy.c                         |   412 ----
 src/dsync/dsync-proxy.h                         |    55 -
 src/dsync/dsync-worker-local.c                  |  1895 ----------------------
 src/dsync/dsync-worker-private.h                |   105 -
 src/dsync/dsync-worker.c                        |   285 ---
 src/dsync/dsync-worker.h                        |   164 -
 src/dsync/dsync.c                               |   364 ----
 src/dsync/test-dsync-brain-msgs.c               |   670 --------
 src/dsync/test-dsync-brain.c                    |   294 ---
 src/dsync/test-dsync-common.c                   |    80 -
 src/dsync/test-dsync-common.h                   |    18 -
 src/dsync/test-dsync-proxy-server-cmd.c         |   485 -----
 src/dsync/test-dsync-proxy.c                    |   184 --
 src/dsync/test-dsync-worker.c                   |   481 -----
 src/dsync/test-dsync-worker.h                   |    96 -
 65 files changed, 10173 insertions(+), 10024 deletions(-)

diffs (truncated from 20702 to 300 lines):

diff -r 3c7e01a5c7b7 -r 4c827134997f .hgignore
--- a/.hgignore	Thu Dec 29 11:19:52 2011 +0200
+++ b/.hgignore	Thu Dec 29 14:43:45 2011 +0200
@@ -66,7 +66,6 @@
 src/dns/dns-client
 src/doveadm/doveadm
 src/doveadm/doveadm-server
-src/dsync/dsync
 src/imap-login/imap-login
 src/imap/imap
 src/indexer/indexer
diff -r 3c7e01a5c7b7 -r 4c827134997f configure.in
--- a/configure.in	Thu Dec 29 11:19:52 2011 +0200
+++ b/configure.in	Thu Dec 29 14:43:45 2011 +0200
@@ -2750,7 +2750,7 @@
 src/auth/Makefile
 src/config/Makefile
 src/doveadm/Makefile
-src/dsync/Makefile
+src/doveadm/dsync/Makefile
 src/lda/Makefile
 src/log/Makefile
 src/lmtp/Makefile
diff -r 3c7e01a5c7b7 -r 4c827134997f src/Makefile.am
--- a/src/Makefile.am	Thu Dec 29 11:19:52 2011 +0200
+++ b/src/Makefile.am	Thu Dec 29 14:43:45 2011 +0200
@@ -41,7 +41,6 @@
 	director \
 	util \
 	doveadm \
-	dsync \
 	ssl-params \
 	stats \
 	plugins
diff -r 3c7e01a5c7b7 -r 4c827134997f src/doveadm/Makefile.am
--- a/src/doveadm/Makefile.am	Thu Dec 29 11:19:52 2011 +0200
+++ b/src/doveadm/Makefile.am	Thu Dec 29 14:43:45 2011 +0200
@@ -1,6 +1,8 @@
 doveadm_moduledir = $(moduledir)/doveadm
 pkglibexecdir = $(libexecdir)/dovecot
 
+SUBDIRS = dsync
+
 bin_PROGRAMS = doveadm
 pkglibexec_PROGRAMS = doveadm-server
 
@@ -35,6 +37,7 @@
 	../lib-otp/libotp.a
 
 libs = \
+	dsync/libdsync.a \
 	$(LIBDOVECOT_STORAGE) \
 	$(unused_objects)
 
@@ -122,3 +125,7 @@
 	doveadm-settings.h \
 	doveadm-util.h \
 	doveadm-who.h
+
+install-exec-local:
+	rm -f $(DESTDIR)$(bindir)/dsync
+	$(LN_S) doveadm $(DESTDIR)$(bindir)/dsync
diff -r 3c7e01a5c7b7 -r 4c827134997f src/doveadm/client-connection.c
--- a/src/doveadm/client-connection.c	Thu Dec 29 11:19:52 2011 +0200
+++ b/src/doveadm/client-connection.c	Thu Dec 29 14:43:45 2011 +0200
@@ -41,9 +41,6 @@
 			const struct mail_storage_service_input *input,
 			int argc, char *argv[])
 {
-	enum mail_storage_service_flags service_flags =
-		MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT |
-		MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
 	struct doveadm_mail_cmd_context *ctx;
 	const struct doveadm_mail_cmd *cmd;
 	const char *getopt_args;
@@ -56,12 +53,15 @@
 		return FALSE;
 	}
 
-	if (doveadm_debug)
-		service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
-
 	ctx = doveadm_mail_cmd_init(cmd, set);
 	ctx->full_args = (const void *)(argv + 1);
 
+	ctx->service_flags |=
+		MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT |
+		MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
+	if (doveadm_debug)
+		ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
+
 	getopt_args = t_strconcat("AS:u:", ctx->getopt_args, NULL);
 	while ((c = getopt(argc, argv, getopt_args)) > 0) {
 		switch (c) {
@@ -106,7 +106,10 @@
 	}
 
 	ctx->args = (const void *)argv;
-	doveadm_mail_single_user(ctx, input, service_flags);
+	if (ctx->v.preinit != NULL)
+		ctx->v.preinit(ctx);
+
+	doveadm_mail_single_user(ctx, input);
 	doveadm_mail_server_flush();
 	ctx->v.deinit(ctx);
 	doveadm_print_flush();
diff -r 3c7e01a5c7b7 -r 4c827134997f src/doveadm/doveadm-mail.c
--- a/src/doveadm/doveadm-mail.c	Thu Dec 29 11:19:52 2011 +0200
+++ b/src/doveadm/doveadm-mail.c	Thu Dec 29 14:43:45 2011 +0200
@@ -19,6 +19,7 @@
 #include "doveadm.h"
 #include "doveadm-settings.h"
 #include "doveadm-print.h"
+#include "dsync/doveadm-dsync.h"
 #include "doveadm-mail.h"
 
 #include <stdio.h>
@@ -186,7 +187,6 @@
 		       const struct mail_storage_service_input *input,
 		       const char **error_r)
 {
-	struct mail_storage_service_user *service_user;
 	const char *error;
 	int ret;
 
@@ -199,7 +199,7 @@
 		return ret;
 
 	ret = mail_storage_service_lookup(ctx->storage_service, input,
-					  &service_user, &error);
+					  &ctx->cur_service_user, &error);
 	if (ret <= 0) {
 		if (ret < 0) {
 			*error_r = t_strdup_printf("User lookup failed: %s",
@@ -208,31 +208,32 @@
 		return ret;
 	}
 
-	ret = mail_storage_service_next(ctx->storage_service, service_user,
+	ret = mail_storage_service_next(ctx->storage_service,
+					ctx->cur_service_user,
 					&ctx->cur_mail_user);
 	if (ret < 0) {
 		*error_r = "User init failed";
-		mail_storage_service_user_free(&service_user);
+		mail_storage_service_user_free(&ctx->cur_service_user);
 		return ret;
 	}
 
 	ctx->v.run(ctx, ctx->cur_mail_user);
 	mail_user_unref(&ctx->cur_mail_user);
-	mail_storage_service_user_free(&service_user);
+	mail_storage_service_user_free(&ctx->cur_service_user);
 	return 1;
 }
 
 void doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,
-			      const struct mail_storage_service_input *input,
-			      enum mail_storage_service_flags service_flags)
+			      const struct mail_storage_service_input *input)
 {
 	const char *error;
 	int ret;
 
 	i_assert(input->username != NULL);
 
+	ctx->cur_username = input->username;
 	ctx->storage_service = mail_storage_service_init(master_service, NULL,
-							 service_flags);
+							 ctx->service_flags);
 	ctx->v.init(ctx, ctx->args);
 	if (hook_doveadm_mail_init != NULL)
 		hook_doveadm_mail_init(ctx);
@@ -251,21 +252,20 @@
 
 static void
 doveadm_mail_all_users(struct doveadm_mail_cmd_context *ctx, char *argv[],
-		       const char *wildcard_user,
-		       enum mail_storage_service_flags service_flags)
+		       const char *wildcard_user)
 {
 	struct mail_storage_service_input input;
 	unsigned int user_idx, user_count, interval, n;
 	const char *user, *error;
 	int ret;
 
-	service_flags |= MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
+	ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
 
 	memset(&input, 0, sizeof(input));
 	input.service = "doveadm";
 
 	ctx->storage_service = mail_storage_service_init(master_service, NULL,
-							 service_flags);
+							 ctx->service_flags);
         lib_signals_set_handler(SIGINT, 0, sig_die, NULL);
 	lib_signals_set_handler(SIGTERM, 0, sig_die, NULL);
 
@@ -355,20 +355,19 @@
 static void
 doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[])
 {
-	enum mail_storage_service_flags service_flags =
-		MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT;
 	struct doveadm_mail_cmd_context *ctx;
-	const char *getopt_args, *username, *wildcard_user;
+	const char *getopt_args, *wildcard_user;
 	int c;
 
-	if (doveadm_debug)
-		service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
-
 	ctx = doveadm_mail_cmd_init(cmd, doveadm_settings);
 	ctx->full_args = (const void *)(argv + 1);
 
+	ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT;
+	if (doveadm_debug)
+		ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
+
 	getopt_args = t_strconcat("AS:u:", ctx->getopt_args, NULL);
-	username = getenv("USER");
+	ctx->cur_username = getenv("USER");
 	wildcard_user = NULL;
 	while ((c = getopt(argc, argv, getopt_args)) > 0) {
 		switch (c) {
@@ -381,12 +380,14 @@
 				doveadm_settings->doveadm_worker_count = 1;
 			break;
 		case 'u':
-			service_flags |=
+			ctx->service_flags |=
 				MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
-			username = optarg;
-			if (strchr(username, '*') != NULL ||
-			    strchr(username, '?') != NULL)
-				wildcard_user = username;
+			ctx->cur_username = optarg;
+			if (strchr(ctx->cur_username, '*') != NULL ||
+			    strchr(ctx->cur_username, '?') != NULL) {
+				wildcard_user = ctx->cur_username;
+				ctx->cur_username = NULL;
+			}
 			break;
 		default:
 			if (ctx->v.parse_arg == NULL ||
@@ -400,6 +401,8 @@
 			cmd->name, argv[0]);
 	}
 	ctx->args = (const void *)argv;
+	if (ctx->v.preinit != NULL)
+		ctx->v.preinit(ctx);
 
 	ctx->iterate_single_user =
 		!ctx->iterate_all_users && wildcard_user == NULL;
@@ -412,16 +415,16 @@
 	if (ctx->iterate_single_user) {
 		struct mail_storage_service_input input;
 
-		if (username == NULL)
+		if (ctx->cur_username == NULL)
 			i_fatal("USER environment is missing and -u option not used");
 
 		memset(&input, 0, sizeof(input));
 		input.service = "doveadm";
-		input.username = username;
-		doveadm_mail_single_user(ctx, &input, service_flags);
+		input.username = ctx->cur_username;
+		doveadm_mail_single_user(ctx, &input);
 	} else {
-		service_flags |= MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP;
-		doveadm_mail_all_users(ctx, argv, wildcard_user, service_flags);
+		ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP;
+		doveadm_mail_all_users(ctx, argv, wildcard_user);
 	}
 	if (ctx->search_args != NULL)
 		mail_search_args_unref(&ctx->search_args);
@@ -432,6 +435,8 @@
 	/* service deinit unloads mail plugins, so do it late */
 	mail_storage_service_deinit(&ctx->storage_service);
 
+	if (ctx->exit_code != 0)
+		exit(ctx->exit_code);
 	if (ctx->failed)
 		exit(FATAL_DEFAULT);
 	pool_unref(&ctx->pool);
@@ -579,7 +584,10 @@
 	&cmd_mailbox_rename,
 	&cmd_mailbox_subscribe,
 	&cmd_mailbox_unsubscribe,
-	&cmd_mailbox_status
+	&cmd_mailbox_status,
+	&cmd_dsync_backup,
+	&cmd_dsync_mirror,
+	&cmd_dsync_server
 };
 
 void doveadm_mail_init(void)
diff -r 3c7e01a5c7b7 -r 4c827134997f src/doveadm/doveadm-mail.h
--- a/src/doveadm/doveadm-mail.h	Thu Dec 29 11:19:52 2011 +0200
+++ b/src/doveadm/doveadm-mail.h	Thu Dec 29 14:43:45 2011 +0200


More information about the dovecot-cvs mailing list