array_append(&doveadm_mail_cmds, cmd, 1);
}
-void doveadm_mail_usage(void)
+void doveadm_mail_usage(FILE *out)
{
const struct doveadm_mail_cmd *cmd;
array_foreach(&doveadm_mail_cmds, cmd) {
- fprintf(stderr, USAGE_CMDNAME_FMT" [-u <user>|-A]", cmd->name);
+ fprintf(out, USAGE_CMDNAME_FMT" [-u <user>|-A]", cmd->name);
if (cmd->usage_args != NULL)
- fprintf(stderr, " %s", cmd->usage_args);
- fputc('\n', stderr);
+ fprintf(out, " %s", cmd->usage_args);
+ fputc('\n', out);
}
}
#ifndef DOVEADM_MAIL_H
#define DOVEADM_MAIL_H
+#include <stdio.h>
#include "doveadm.h"
#include "module-context.h"
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_usage(FILE *out);
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);
array_append(&doveadm_cmds, cmd, 1);
}
-void usage(void)
+static void ATTR_NORETURN
+usage_to(FILE *out)
{
const struct doveadm_cmd *cmd;
- fprintf(stderr, "usage: doveadm [-Dv] <command> [<args>]\n");
+ fprintf(out, "usage: doveadm [-Dv] <command> [<args>]\n");
array_foreach(&doveadm_cmds, cmd) {
- fprintf(stderr, USAGE_CMDNAME_FMT" %s\n",
+ fprintf(out, USAGE_CMDNAME_FMT" %s\n",
cmd->name, cmd->short_usage);
}
- doveadm_mail_usage();
+ doveadm_mail_usage(out);
exit(1);
}
+void usage(void)
+{
+ usage_to(stderr);
+}
+
void help(const struct doveadm_cmd *cmd)
{
fprintf(stderr, "doveadm %s %s\n", cmd->name, cmd->short_usage);
int i;
if (argv[1] == NULL)
- usage();
+ usage_to(stdout);
name = t_str_new(100);
for (i = 1; i < argc; i++) {
str_append_c(name, ' ');
}
- usage();
+ usage_to(stdout);
}
static struct doveadm_cmd doveadm_cmd_help = {
doveadm_load_modules();
if (optind == argc)
- usage();
+ usage_to(stdout);
cmd_name = argv[optind];
argc -= optind;