t_packtests64_SOURCES = t/packtests64.c src/pack.c src/tap.c
if HAVE_STRUCT_OPTION
-check_PROGRAMS += t/helpdesc t/helpopt
+check_PROGRAMS += t/helpdesc t/helpopt t/helpopt2
endif
+EXTRA_LIBRARIES = libglohelp.a
+libglohelp_a_SOURCES = src/help.c
+libglohelp_a_CFLAGS = -DHELP_GETOPT_LONG_ONLY
+libglohelp_a_SHORTNAME = glo
+
t_helpopt_SOURCES = t/helpopt.c src/help.c src/tap.c
+t_helpopt2_SOURCES = t/helpopt.c src/tap.c
+t_helpopt2_LDADD = $(libglohelp_a_OBJECTS)
t_helpdesc_SOURCES = t/helpdesc.c src/help.c src/tap.c
DISTCLEANFILES =
goto no_translate;
switch (option_type(opt)) {
+#if HELP_GETOPT_LONG_ONLY
+ case OPT_SHORT_WITH_OPTIONAL_ARG:
+ case OPT_LONG_WITH_OPTIONAL_ARG:
+ w = snprintf(optstring, sizeof optstring,
+ _(" -%s [%s]"), opt->name,
+ pgettext_expr(opt->name, argname));
+ break;
+ case OPT_SHORT_WITH_MANDATORY_ARG:
+ case OPT_LONG_WITH_MANDATORY_ARG:
+ w = snprintf(optstring, sizeof optstring,
+ _(" -%s %s"), opt->name,
+ pgettext_expr(opt->name, argname));
+ break;
+ case OPT_SHORT_WITHOUT_ARG:
+ case OPT_LONG_WITHOUT_ARG:
+ w = snprintf(optstring, sizeof optstring,
+ _(" -%s"), opt->name);
+ break;
+#else
case OPT_SHORT_WITH_OPTIONAL_ARG:
w = snprintf(optstring, sizeof optstring,
_(" -%c, --%s[=%s]"), opt->val, opt->name,
w = snprintf(optstring, sizeof optstring,
_(" --%s"), opt->name);
break;
+#endif
default:
assert(0);
}
no_translate:
switch (option_type(opt)) {
+#if HELP_GETOPT_LONG_ONLY
+ case OPT_SHORT_WITH_OPTIONAL_ARG:
+ case OPT_LONG_WITH_OPTIONAL_ARG:
+ w = printf(" -%s [%s]", opt->name, argname);
+ break;
+ case OPT_SHORT_WITH_MANDATORY_ARG:
+ case OPT_LONG_WITH_MANDATORY_ARG:
+ w = printf(" -%s %s", opt->name, argname);
+ break;
+ case OPT_SHORT_WITHOUT_ARG:
+ case OPT_LONG_WITHOUT_ARG:
+ w = printf(" -%s", opt->name);
+ break;
+#else
case OPT_SHORT_WITH_OPTIONAL_ARG:
w = printf(" -%c, --%s[=%s]", opt->val, opt->name, argname);
break;
case OPT_LONG_WITHOUT_ARG:
w = printf(" --%s", opt->name);
break;
+#endif
default:
assert(0);
}
]])
AT_CLEANUP
+
+AT_SETUP([help_print_optstring (getopt_long_only)])
+
+AT_SKIP_IF([test ! -x "$builddir/t/helpopt2"])
+
+AT_CHECK([m4_join([ ],
+ ["$builddir/t/helpopt2"],
+ [--foo],
+ [--bar -b],
+ [--baz ARG],
+ [--baz -B ARG],
+ [--quux '@<:@ARG@:>@'],
+ [--quux -q '@<:@ARG@:>@'],
+ [--hello-this-is-a-very-long-option 20],
+ [--hello-this-is-a-very-long-option 50],
+ [--not-long 12])], [0],
+[[ -foo 6
+ -bar 6
+ -baz ARG 10
+ -baz ARG 10
+ -quux [ARG] 13
+ -quux [ARG] 13
+ -hello-this-is-a-very-long-option
+ 0
+ -hello-this-is-a-very-long-option 35
+ -not-long 11
+]])
+
+AT_CLEANUP