From: Timo Sirainen Date: Wed, 9 Jun 2021 20:44:29 +0000 (+0300) Subject: doveadm: Add CMD_FLAG_NO_OPTIONS X-Git-Tag: 2.3.17~314 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8b461f612c1ede5e6c10c18d487dc19d7861df2d;p=thirdparty%2Fdovecot%2Fcore.git doveadm: Add CMD_FLAG_NO_OPTIONS This allows command to process all parameters, including parameters starting with "-". --- diff --git a/src/doveadm/doveadm-cmd.c b/src/doveadm/doveadm-cmd.c index 7fe9754c6c..13ee93d823 100644 --- a/src/doveadm/doveadm-cmd.c +++ b/src/doveadm/doveadm-cmd.c @@ -533,6 +533,12 @@ doveadm_cmd_process_options(int argc, const char *const argv[], } i_assert(pargc == array_count(&opts)-1); /* opts is NULL-terminated */ + if ((cctx->cmd->flags & CMD_FLAG_NO_OPTIONS) != 0) { + /* process -parameters as if they were regular parameters */ + optind = 1; + return 0; + } + int c, li; while ((c = getopt_long(argc, (char *const *)argv, str_c(optbuf), array_front(&opts), &li)) > -1) { diff --git a/src/doveadm/doveadm-cmd.h b/src/doveadm/doveadm-cmd.h index 5cb2bbce37..a8f8ae9bdc 100644 --- a/src/doveadm/doveadm-cmd.h +++ b/src/doveadm/doveadm-cmd.h @@ -32,6 +32,8 @@ typedef enum { CMD_FLAG_NONE = 0x0, CMD_FLAG_HIDDEN = 0x1, CMD_FLAG_NO_PRINT = 0x2, + /* Don't parse any -options for the command. */ + CMD_FLAG_NO_OPTIONS = 0x4, } doveadm_cmd_flag_t; struct doveadm_cmd_param {