dovecot-2.0-sslstream: doveadm: Fixed printing help for purge an...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 13 02:55:39 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0-sslstream/rev/2b9eb115fbd7
changeset: 10183:2b9eb115fbd7
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Oct 26 13:59:43 2009 -0400
description:
doveadm: Fixed printing help for purge and force-resync commands.

diffstat:

3 files changed, 30 insertions(+), 7 deletions(-)
src/doveadm/doveadm-mail.c |   32 +++++++++++++++++++++++++-------
src/doveadm/doveadm-mail.h |    3 +++
src/doveadm/doveadm.c      |    2 ++

diffs (114 lines):

diff -r 4dc080520769 -r 2b9eb115fbd7 src/doveadm/doveadm-mail.c
--- a/src/doveadm/doveadm-mail.c	Mon Oct 26 13:47:27 2009 -0400
+++ b/src/doveadm/doveadm-mail.c	Mon Oct 26 13:59:43 2009 -0400
@@ -14,6 +14,7 @@
 #include "doveadm-mail.h"
 
 #include <stdio.h>
+#include <stdlib.h>
 
 ARRAY_TYPE(doveadm_mail_cmd) doveadm_mail_cmds;
 
@@ -62,7 +63,7 @@ static void cmd_force_resync(struct mail
 	struct mailbox *box;
 
 	if (mailbox == NULL)
-		usage();
+		doveadm_mail_help_name("force-resync");
 
 	box = mailbox_find_and_open(user, mailbox);
 	storage = mailbox_get_storage(box);
@@ -201,7 +202,7 @@ doveadm_mail_all_users(doveadm_mail_comm
 }
 
 static void
-doveadm_mail_cmd(doveadm_mail_command_t *cmd, int argc, char *argv[])
+doveadm_mail_cmd(const struct doveadm_mail_cmd *cmd, int argc, char *argv[])
 {
 	enum mail_storage_service_flags service_flags = 0;
 	const char *username;
@@ -217,19 +218,19 @@ doveadm_mail_cmd(doveadm_mail_command_t 
 			service_flags |= MAIL_STORAGE_SERVICE_FLAG_DEBUG;
 			break;
 		default:
-			usage();
+			doveadm_mail_help(cmd);
 		}
 	}
 	if (!all_users) {
 		if (optind == argc)
-			usage();
+			doveadm_mail_help(cmd);
 		service_flags |= MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP;
 		username = argv[optind++];
-		doveadm_mail_single_user(cmd, username, service_flags,
+		doveadm_mail_single_user(cmd->cmd, username, service_flags,
 					 (const char **)argv + optind);
 	} else {
 		service_flags |= MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP;
-		doveadm_mail_all_users(cmd, service_flags,
+		doveadm_mail_all_users(cmd->cmd, service_flags,
 				       (const char **)argv + optind);
 	}
 }
@@ -240,7 +241,7 @@ bool doveadm_mail_try_run(const char *cm
 
 	array_foreach(&doveadm_mail_cmds, cmd) {
 		if (strcmp(cmd->name, cmd_name) == 0) {
-			doveadm_mail_cmd(cmd->cmd, argc, argv);
+			doveadm_mail_cmd(cmd, argc, argv);
 			return TRUE;
 		}
 	}
@@ -265,6 +266,23 @@ void doveadm_mail_usage(void)
 	}
 }
 
+void doveadm_mail_help(const struct doveadm_mail_cmd *cmd)
+{
+	fprintf(stderr, "doveadm %s %s\n", cmd->name,
+		cmd->usage_args == NULL ? "" : cmd->usage_args);
+	exit(0);
+}
+
+void doveadm_mail_help_name(const char *cmd_name)
+{
+	const struct doveadm_mail_cmd *cmd;
+
+	array_foreach(&doveadm_mail_cmds, cmd) {
+		if (strcmp(cmd->name, cmd_name) == 0)
+			doveadm_mail_help(cmd);
+	}
+}
+
 static struct doveadm_mail_cmd mail_commands[] = {
 	{ cmd_purge, "purge", NULL },
 	{ cmd_force_resync, "force-resync", "<mailbox>" }
diff -r 4dc080520769 -r 2b9eb115fbd7 src/doveadm/doveadm-mail.h
--- a/src/doveadm/doveadm-mail.h	Mon Oct 26 13:47:27 2009 -0400
+++ b/src/doveadm/doveadm-mail.h	Mon Oct 26 13:59:43 2009 -0400
@@ -17,7 +17,10 @@ extern ARRAY_TYPE(doveadm_mail_cmd) dove
 
 bool doveadm_mail_try_run(const char *cmd_name, int argc, char *argv[]);
 void doveadm_mail_register_cmd(const struct doveadm_mail_cmd *cmd);
+
 void doveadm_mail_usage(void);
+void doveadm_mail_help(const struct doveadm_mail_cmd *cmd);
+void doveadm_mail_help_name(const char *cmd_name);
 
 void doveadm_mail_init(void);
 void doveadm_mail_deinit(void);
diff -r 4dc080520769 -r 2b9eb115fbd7 src/doveadm/doveadm.c
--- a/src/doveadm/doveadm.c	Mon Oct 26 13:47:27 2009 -0400
+++ b/src/doveadm/doveadm.c	Mon Oct 26 13:59:43 2009 -0400
@@ -49,8 +49,10 @@ static void cmd_help(int argc ATTR_UNUSE
 		if (strcmp(cmd->name, argv[1]) == 0)
 			help(cmd);
 	}
+	doveadm_mail_help_name(argv[1]);
 	usage();
 }
+
 static struct doveadm_cmd doveadm_cmd_help = {
 	cmd_help, "help", "<cmd>", NULL
 };


More information about the dovecot-cvs mailing list