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