]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Fixed printing help for purge and force-resync commands.
authorTimo Sirainen <tss@iki.fi>
Mon, 26 Oct 2009 17:59:43 +0000 (13:59 -0400)
committerTimo Sirainen <tss@iki.fi>
Mon, 26 Oct 2009 17:59:43 +0000 (13:59 -0400)
--HG--
branch : HEAD

src/doveadm/doveadm-mail.c
src/doveadm/doveadm-mail.h
src/doveadm/doveadm.c

index 9e9e56341e7a22ba912f59893d92ad30a99b1ee5..ed7cecb4449d0d496817fcd09ce3a5cfcd37b13c 100644 (file)
@@ -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_user *user, const char *args[])
        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_command_t *cmd,
 }
 
 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 *cmd, int argc, char *argv[])
                        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 *cmd_name, int argc, char *argv[])
 
        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>" }
index 4ac6f1f5a40046d8832ea9d34439012111cba1c4..fb2b144169278b573e945e655c7b6a20aad09c2e 100644 (file)
@@ -17,7 +17,10 @@ extern ARRAY_TYPE(doveadm_mail_cmd) doveadm_mail_cmds;
 
 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);
index e4d2d4347851c47e247133e3253ba7a427c98424..52f0d96a17b18c9b775fefe3b04fa92936d6a62d 100644 (file)
@@ -49,8 +49,10 @@ static void cmd_help(int argc ATTR_UNUSED, char *argv[])
                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
 };