Signed-off-by: Michele Ballabio <barra_cuda@xxxxxxxxxxxx> --- builtin-mailinfo.c | 39 +++++++++++++++++++++------------------ 1 files changed, 21 insertions(+), 18 deletions(-) diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c index f974b9d..f1ed269 100644 --- a/builtin-mailinfo.c +++ b/builtin-mailinfo.c @@ -6,6 +6,7 @@ #include "builtin.h" #include "utf8.h" #include "strbuf.h" +#include "parse-options.h" static FILE *cmitmsg, *patchfile, *fin, *fout; @@ -905,8 +906,10 @@ static int mailinfo(FILE *in, FILE *out, int ks, const char *encoding, return 0; } -static const char mailinfo_usage[] = - "git mailinfo [-k] [-u | --encoding=<encoding> | -n] msg patch <mail >info"; +static const char * const mailinfo_usage[] = { + "git mailinfo [-k] [-u | --encoding=<encoding> | -n] msg patch <mail >info", + NULL +}; int cmd_mailinfo(int argc, const char **argv, const char *prefix) { @@ -920,22 +923,22 @@ int cmd_mailinfo(int argc, const char **argv, const char *prefix) def_charset = (git_commit_encoding ? git_commit_encoding : "utf-8"); metainfo_charset = def_charset; - while (1 < argc && argv[1][0] == '-') { - if (!strcmp(argv[1], "-k")) - keep_subject = 1; - else if (!strcmp(argv[1], "-u")) - metainfo_charset = def_charset; - else if (!strcmp(argv[1], "-n")) - metainfo_charset = NULL; - else if (!prefixcmp(argv[1], "--encoding=")) - metainfo_charset = argv[1] + 11; - else - usage(mailinfo_usage); - argc--; argv++; - } + const struct option options[] = { + OPT_BOOLEAN('k', NULL, &keep_subject, + "keep subject, don't clean it up"), + OPT_SET_PTR('u', NULL, &metainfo_charset, + "re-code in UTF-8", (intptr_t)def_charset), + OPT_SET_PTR('n', NULL, &metainfo_charset, + "disable re-coding", (intptr_t)NULL), + OPT_STRING(0, "encoding", &metainfo_charset, + "encoding", "override default encoding"), + OPT_END() + }; + + argc = parse_options(argc, argv, options, mailinfo_usage, 0); - if (argc != 3) - usage(mailinfo_usage); + if (argc != 2) + usage_with_options(mailinfo_usage, options); - return !!mailinfo(stdin, stdout, keep_subject, metainfo_charset, argv[1], argv[2]); + return !!mailinfo(stdin, stdout, keep_subject, metainfo_charset, argv[0], argv[1]); } -- 1.5.6.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html