From: Nick Bowler Date: Wed, 24 Nov 2021 02:55:01 +0000 (-0500) Subject: Use help formatting routines from dxcommon. X-Git-Url: http://git.draconx.ca/gitweb/slotifier.git/commitdiff_plain/cc2c58eddd5c67c98502cee2960fc3673c62d8ea Use help formatting routines from dxcommon. Reduce code duplication across packages by making use of this library version of the block printing code. --- diff --git a/Makefile.am b/Makefile.am index 607865d..28bdd17 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,12 +15,13 @@ EXTRA_DIST = bootstrap common/scripts/fix-gnulib.pl m4/gnulib-cache.m4 \ INSTALL README.md AM_CPPFLAGS = -I$(top_builddir)/lib -I$(top_srcdir)/lib \ - -DLOCALEDIR=\"$(localedir)\" + -I$(DX_BASEDIR)/src -DLOCALEDIR=\"$(localedir)\" AM_CFLAGS = $(LIBGERBV_CFLAGS) $(CNEARTREE_CFLAGS) bin_PROGRAMS = slotifier -slotifier_SOURCES = src/slotifier.c src/options.h +slotifier_SOURCES = src/slotifier.c src/options.h \ + common/src/help.c common/src/help.h slotifier_LDADD = $(LIBGERBV_LIBS) $(CNEARTREE_LIBS) libgnu.a \ $(LTLIBICONV) $(LTLIBINTL) $(HYPOT_LIBM) $(slotifier_OBJECTS): $(gnulib_headers) diff --git a/NEWS b/NEWS index 67bb5af..9aebac4 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,6 @@ +Release 1.2a: + * Various bug fixes and improvements. + Release 1.2: * Fix calculation error in overlap relation. * Various bug fixes and improvements. diff --git a/common b/common index aa6ab45..6532aaa 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit aa6ab453c6ff523a4d8538554c068117f2de3aca +Subproject commit 6532aaac91a7efd99eb74726679c4000459e7bb3 diff --git a/configure.ac b/configure.ac index d801614..6100d26 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2. dnl This is free software: you are free to do what the fuck you want to. dnl There is NO WARRANTY, to the extent permitted by law. -AC_INIT([slotifier], [1.2], [nbowler@draconx.ca]) +AC_INIT([slotifier], [1.2a], [nbowler@draconx.ca]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign subdir-objects dist-xz]) diff --git a/src/slotifier.c b/src/slotifier.c index 19865c0..5718386 100644 --- a/src/slotifier.c +++ b/src/slotifier.c @@ -32,6 +32,8 @@ #include #include +#include "help.h" + #if !ENABLE_NLS # undef ENABLE_NLS # define ENABLE_NLS 0 @@ -78,65 +80,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). - */ -static 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; @@ -150,17 +93,11 @@ static void print_help(void) puts(_("Options:")); for (opt = lopts; opt->val; 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');