X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/35684c08a8429cf1c1148c74d2df8cdf4c31bbac..98600e8bed3760e4bc82694a38422936b003419f:/src/cdecl99.c diff --git a/src/cdecl99.c b/src/cdecl99.c index 27ce048..2354626 100644 --- a/src/cdecl99.c +++ b/src/cdecl99.c @@ -36,6 +36,7 @@ #include "cdecl99.h" #include "cdecl.h" +#include "help.h" static const char *progname = "cdecl99"; static bool interactive = true; @@ -90,65 +91,6 @@ static void print_usage(FILE *f) progname); } -static int -print_optstring(const struct option *opt, const struct lopt_help *help) -{ - char optstring[100]; - int w; - - if (!ENABLE_NLS) - goto no_translate; - - if (opt->has_arg) { - w = snprintf(optstring, sizeof optstring, - _(" -%c, --%s=%s"), opt->val, opt->name, - pgettext_expr(opt->name, help->arg)); - } else { - w = snprintf(optstring, sizeof optstring, - _(" -%c, --%s"), opt->val, opt->name); - } - - if (w < 0) - goto no_translate; - - w = mbsnwidth(optstring, w, 0); - printf("%s", optstring); - goto out; - -no_translate: - if (opt->has_arg) { - w = printf(" -%c, --%s=%s", opt->val, opt->name, help->arg); - } else { - w = printf(" -%c, --%s", opt->val, opt->name); - } -out: - if (w < 0 || w > 18) { - putchar('\n'); - return 0; - } - - return w; -} - -/* - * Print a string, with each line indented by i spaces. The first line - * will be indented by w fewer spaces (to account for the cursor being in - * some other column). - */ -void print_block(const char *s, int i, int w) -{ - for (; *s; w = 0) { - const char *nl = strchr(s, '\n'); - int n = (nl ? nl-s : -1); - - printf("%*s%.*s\n", i-w, "", n, s); - if (!nl) - break; - - s = nl+1; - } -} - static void print_help(void) { const struct option *opt; @@ -162,17 +104,11 @@ static void print_help(void) puts(_("Options:")); for (opt = lopts; opt->name; opt++) { struct lopt_help help; - int w; if (!lopt_get_help(opt, &help)) continue; - w = print_optstring(opt, &help); - - if (ENABLE_NLS) - help.desc = pgettext_expr(opt->name, help.desc); - - print_block(help.desc, 20, w); + help_print_option(opt, help.arg, help.desc, 20); } putchar('\n'); @@ -313,9 +249,7 @@ int main(int argc, char **argv) if (optind < argc) { fprintf(stderr, "%s: ", progname); - - fprintf(stderr, _("excess command-line arguments:"), - progname); + fprintf(stderr, _("excess command-line arguments:")); for (i = optind; i < argc; i++) { fprintf(stderr, " %s", argv[i]); }