diff --git a/lib/argp-help.c b/lib/argp-help.c index 4c0ca60..5ca3378 100644 --- a/lib/argp-help.c +++ b/lib/argp-help.c @@ -46,6 +46,16 @@ # include "gettext.h" #endif +#ifdef _LIBC +# define ARGP_TEXT_DOMAIN "libc" +#else +# ifdef DEFAULT_TEXT_DOMAIN +# define ARGP_TEXT_DOMAIN DEFAULT_TEXT_DOMAIN +# else +# define ARGP_TEXT_DOMAIN NULL +# endif +#endif + #include "argp.h" #include "argp-fmtstream.h" #include "argp-namefrob.h" @@ -143,7 +153,7 @@ validate_uparams (const struct argp_state *state, struct uparams *upptr) if (*(int *)((char *)upptr + up->uparams_offs) >= upptr->rmargin) { __argp_failure (state, 0, 0, - dgettext (state->root_argp->argp_domain, + dgettext (ARGP_TEXT_DOMAIN, "\ ARGP_HELP_FMT: %s value is less than or equal to %s"), "rmargin", up->name); @@ -216,13 +226,13 @@ fill_in_uparams (const struct argp_state *state) { if (unspec && !un->is_bool) __argp_failure (state, 0, 0, - dgettext (state->root_argp->argp_domain, + dgettext (ARGP_TEXT_DOMAIN, "\ %.*s: ARGP_HELP_FMT parameter requires a value"), (int) var_len, var); else if (val < 0) __argp_failure (state, 0, 0, - dgettext (state->root_argp->argp_domain, + dgettext (ARGP_TEXT_DOMAIN, "\ %.*s: ARGP_HELP_FMT parameter must be positive"), (int) var_len, var); @@ -232,7 +242,7 @@ fill_in_uparams (const struct argp_state *state) } if (! un->name) __argp_failure (state, 0, 0, - dgettext (state->root_argp->argp_domain, "\ + dgettext (ARGP_TEXT_DOMAIN, "\ %.*s: Unknown ARGP_HELP_FMT parameter"), (int) var_len, var); @@ -243,7 +253,7 @@ fill_in_uparams (const struct argp_state *state) else if (*var) { __argp_failure (state, 0, 0, - dgettext (state->root_argp->argp_domain, + dgettext (ARGP_TEXT_DOMAIN, "Garbage in ARGP_HELP_FMT: %s"), var); break; } @@ -1135,7 +1145,7 @@ hol_entry_help (struct hol_entry *entry, const struct argp_state *state, __argp_fmtstream_putc (stream, '-'); __argp_fmtstream_putc (stream, *so); if (!have_long_opt || uparams.dup_args) - arg (real, " %s", "[%s]", state->root_argp->argp_domain, stream); + arg (real, " %s", "[%s]", entry->argp->argp_domain, stream); else if (real->arg) hhstate->suppressed_dup_arg = 1; } @@ -1157,7 +1167,7 @@ hol_entry_help (struct hol_entry *entry, const struct argp_state *state, __argp_fmtstream_puts (stream, onotrans (opt) ? opt->name : - dgettext (state->root_argp->argp_domain, + dgettext (entry->argp->argp_domain, opt->name)); } } @@ -1173,7 +1183,7 @@ hol_entry_help (struct hol_entry *entry, const struct argp_state *state, comma (uparams.long_opt_col, &pest); __argp_fmtstream_printf (stream, "--%s", opt->name); if (first_long_opt || uparams.dup_args) - arg (real, "=%s", "[=%s]", state->root_argp->argp_domain, + arg (real, "=%s", "[=%s]", entry->argp->argp_domain, stream); else if (real->arg) hhstate->suppressed_dup_arg = 1; @@ -1195,7 +1205,7 @@ hol_entry_help (struct hol_entry *entry, const struct argp_state *state, } else { - const char *tstr = real->doc ? dgettext (state->root_argp->argp_domain, + const char *tstr = real->doc ? dgettext (entry->argp->argp_domain, real->doc) : 0; const char *fstr = filter_doc (tstr, real->key, entry->argp, state); if (fstr && *fstr) @@ -1243,7 +1253,7 @@ hol_help (struct hol *hol, const struct argp_state *state, if (hhstate.suppressed_dup_arg && uparams.dup_args_note) { - const char *tstr = dgettext (state->root_argp->argp_domain, "\ + const char *tstr = dgettext (ARGP_TEXT_DOMAIN, "\ Mandatory or optional arguments to long options are also mandatory or \ optional for any corresponding short options."); const char *fstr = filter_doc (tstr, ARGP_KEY_HELP_DUP_ARGS_NOTE, @@ -1636,11 +1646,11 @@ _help (const struct argp *argp, const struct argp_state *state, FILE *stream, if (first_pattern) __argp_fmtstream_printf (fs, "%s %s", - dgettext (argp->argp_domain, "Usage:"), + dgettext (ARGP_TEXT_DOMAIN, "Usage:"), name); else __argp_fmtstream_printf (fs, "%s %s", - dgettext (argp->argp_domain, " or: "), + dgettext (ARGP_TEXT_DOMAIN, " or: "), name); /* We set the lmargin as well as the wmargin, because hol_usage @@ -1651,7 +1661,7 @@ _help (const struct argp *argp, const struct argp_state *state, FILE *stream, /* Just show where the options go. */ { if (hol->num_entries > 0) - __argp_fmtstream_puts (fs, dgettext (argp->argp_domain, + __argp_fmtstream_puts (fs, dgettext (ARGP_TEXT_DOMAIN, " [OPTION...]")); } else @@ -1679,7 +1689,7 @@ _help (const struct argp *argp, const struct argp_state *state, FILE *stream, if (flags & ARGP_HELP_SEE) { - __argp_fmtstream_printf (fs, dgettext (argp->argp_domain, "\ + __argp_fmtstream_printf (fs, dgettext (ARGP_TEXT_DOMAIN, "\ Try `%s --help' or `%s --usage' for more information.\n"), name, name); anything = 1; @@ -1706,7 +1716,7 @@ Try `%s --help' or `%s --usage' for more information.\n"), { if (anything) __argp_fmtstream_putc (fs, '\n'); - __argp_fmtstream_printf (fs, dgettext (argp->argp_domain, + __argp_fmtstream_printf (fs, dgettext (ARGP_TEXT_DOMAIN, "Report bugs to %s.\n"), argp_program_bug_address); anything = 1; @@ -1925,8 +1935,7 @@ __argp_failure (const struct argp_state *state, int status, int errnum, #endif #if !_LIBC if (! s && ! (s = strerror (errnum))) - s = dgettext (state->root_argp->argp_domain, - "Unknown system error"); + s = dgettext (ARGP_TEXT_DOMAIN, "Unknown system error"); #endif fputs (s, stream); } diff --git a/lib/argp-parse.c b/lib/argp-parse.c index d86256a..bd0fa4e 100644 --- a/lib/argp-parse.c +++ b/lib/argp-parse.c @@ -39,6 +39,16 @@ #endif #define N_(msgid) msgid +#ifdef _LIBC +# define ARGP_TEXT_DOMAIN "libc" +#else +# ifdef DEFAULT_TEXT_DOMAIN +# define ARGP_TEXT_DOMAIN DEFAULT_TEXT_DOMAIN +# else +# define ARGP_TEXT_DOMAIN NULL +# endif +#endif + #include "argp.h" #include "argp-namefrob.h" @@ -134,7 +144,8 @@ argp_default_parser (int key, char *arg, struct argp_state *state) } static const struct argp argp_default_argp = - {argp_default_options, &argp_default_parser, NULL, NULL, NULL, NULL, "libc"}; + {argp_default_options, &argp_default_parser, NULL, NULL, NULL, NULL, + ARGP_TEXT_DOMAIN}; static const struct argp_option argp_version_options[] = @@ -154,7 +165,7 @@ argp_version_parser (int key, char *arg, struct argp_state *state) else if (argp_program_version) fprintf (state->out_stream, "%s\n", argp_program_version); else - __argp_error (state, dgettext (state->root_argp->argp_domain, + __argp_error (state, dgettext (ARGP_TEXT_DOMAIN, "(PROGRAM ERROR) No version known!?")); if (! (state->flags & ARGP_NO_EXIT)) exit (0); @@ -166,7 +177,8 @@ argp_version_parser (int key, char *arg, struct argp_state *state) } static const struct argp argp_version_argp = - {argp_version_options, &argp_version_parser, NULL, NULL, NULL, NULL, "libc"}; + {argp_version_options, &argp_version_parser, NULL, NULL, NULL, NULL, + ARGP_TEXT_DOMAIN}; /* Returns the offset into the getopt long options array LONG_OPTIONS of a long option with called NAME, or -1 if none is found. Passing NULL as @@ -607,8 +619,7 @@ parser_finalize (struct parser *parser, if (!(parser->state.flags & ARGP_NO_ERRS) && parser->state.err_stream) fprintf (parser->state.err_stream, - dgettext (parser->argp->argp_domain, - "%s: Too many arguments\n"), + dgettext (ARGP_TEXT_DOMAIN, "%s: Too many arguments\n"), parser->state.name); err = EBADKEY; } @@ -754,7 +765,7 @@ parser_parse_opt (struct parser *parser, int opt, char *val) N_("(PROGRAM ERROR) Option should have been recognized!?"); if (group_key == 0) __argp_error (&parser->state, "-%c: %s", opt, - dgettext (parser->argp->argp_domain, bad_key_err)); + dgettext (ARGP_TEXT_DOMAIN, bad_key_err)); else { struct option *long_opt = parser->long_opts; @@ -762,7 +773,7 @@ parser_parse_opt (struct parser *parser, int opt, char *val) long_opt++; __argp_error (&parser->state, "--%s: %s", long_opt->name ? long_opt->name : "???", - dgettext (parser->argp->argp_domain, bad_key_err)); + dgettext (ARGP_TEXT_DOMAIN, bad_key_err)); } }