]> git.draconx.ca Git - slotifier.git/commitdiff
Use help formatting routines from dxcommon.
authorNick Bowler <nbowler@draconx.ca>
Wed, 24 Nov 2021 02:55:01 +0000 (21:55 -0500)
committerNick Bowler <nbowler@draconx.ca>
Wed, 24 Nov 2021 02:55:01 +0000 (21:55 -0500)
Reduce code duplication across packages by making use of this library
version of the block printing code.

Makefile.am
NEWS
common
configure.ac
src/slotifier.c

index 607865d27ca98ad39a59266f8b0b3b6f855055b6..28bdd17fdddef8cc3694426652901433a4e633f0 100644 (file)
@@ -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 67bb5afc192c8c18701e083ba544969772c12f54..9aebac40392349798ab1314300362c921f457600 100644 (file)
--- 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 aa6ab453c6ff523a4d8538554c068117f2de3aca..6532aaac91a7efd99eb74726679c4000459e7bb3 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit aa6ab453c6ff523a4d8538554c068117f2de3aca
+Subproject commit 6532aaac91a7efd99eb74726679c4000459e7bb3
index d801614326a1318f0eb326ed8c8b3316972053a7..6100d262f3ffe7a54223914b1d4f9ab83e110a75 100644 (file)
@@ -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])
index 19865c09c571882a5bc93eb80c6ac5e5c8e0baac..57183864af4a5c1550d3f81b50d14b14e9e5c380 100644 (file)
@@ -32,6 +32,8 @@
 #include <CNearTree.h>
 #include <gerbv.h>
 
+#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');