exit(0);
}
-void doveadm_mail_help_name(const char *cmd_name)
+void doveadm_mail_try_help_name(const char *cmd_name)
{
const struct doveadm_mail_cmd *cmd;
if (strcmp(cmd->name, cmd_name) == 0)
doveadm_mail_help(cmd);
}
+}
+
+void doveadm_mail_help_name(const char *cmd_name)
+{
+ doveadm_mail_try_help_name(cmd_name);
i_fatal("Missing help for command %s", cmd_name);
}
void doveadm_mail_usage(void);
void doveadm_mail_help(const struct doveadm_mail_cmd *cmd) ATTR_NORETURN;
void doveadm_mail_help_name(const char *cmd_name) ATTR_NORETURN;
+void doveadm_mail_try_help_name(const char *cmd_name);
void doveadm_mail_init(void);
void doveadm_mail_deinit(void);
#include "lib.h"
#include "array.h"
+#include "str.h"
#include "module-dir.h"
#include "master-service.h"
#include "master-service-settings.h"
return buf;
}
-static void cmd_help(int argc ATTR_UNUSED, char *argv[])
+static void cmd_help(int argc, char *argv[])
{
const struct doveadm_cmd *cmd;
+ string_t *name;
+ int i;
if (argv[1] == NULL)
usage();
- array_foreach(&doveadm_cmds, cmd) {
- if (strcmp(cmd->name, argv[1]) == 0)
- help(cmd);
+
+ name = t_str_new(100);
+ for (i = 1; i < argc; i++) {
+ str_append(name, argv[i]);
+
+ array_foreach(&doveadm_cmds, cmd) {
+ if (strcmp(cmd->name, str_c(name)) == 0)
+ help(cmd);
+ }
+ doveadm_mail_try_help_name(str_c(name));
+
+ str_append_c(name, ' ');
}
- doveadm_mail_help_name(argv[1]);
usage();
}