Branch
Hash :
2b2bcdbc
Author :
Date :
2025-09-09T09:44:55
gettext-h: support overriding "gnulib" This is for GNU Diffutils, which is still using the old way of also translating Gnulib’s msgids. * lib/gettext.h (GNULIB_TEXT_DOMAIN): New macro. * lib/argmatch.c, lib/bitset/stats.c, lib/c-stack.c: * lib/clean-temp-simple.c, lib/clean-temp-simple.c, lib/clean-temp.c: * lib/closein.c, lib/closeout.c, lib/copy-acl.c, lib/copy-file.c: * lib/csharpcomp.c, lib/csharpexec.c, lib/cygpath.c, lib/dfa.c: * lib/error.c, lib/execute.c, lib/gai_strerror.c, lib/getaddrinfo.c: * lib/getopt.c, lib/javacomp.c, lib/javaexec.c, lib/javaversion.c: * lib/mkdir-p.c, lib/obstack.c, lib/openat-die.c, lib/os2-spawn.c: * lib/pagealign_alloc.c, lib/parse-datetime.y, lib/pipe-filter-gi.c: * lib/pipe-filter-ii.c, lib/quotearg.c, lib/rpmatch.c, lib/set-acl.c: * lib/sigpipe-die.c, lib/spawn-pipe.c, lib/strsignal.c, lib/timevar.c: * lib/unicodeio.c, lib/userspec.c, lib/vc-mtime.c, lib/version-etc.c: * lib/wait-process.c, lib/windows-cygpath.c, lib/xalloc-die.c: * lib/xbinary-io.c, lib/xfreopen.c, lib/xmemcoll.c, lib/xprintf.c: * lib/xsetenv.c, lib/xstdopen.c, lib/xstrerror.c, lib/xstrtol-error.c: (_): Use GNULIB_TEXT_DOMAIN instead of "gnulib" when calling dgettext. * lib/argmatch.h (ARGMATCH_DEFINE_GROUP): * lib/file-type.c (file_type): * lib/regex_internal.h (gettext) [HAVE_LIBINTL_H & ENABLE_NLS & !_LIBC]: * lib/xstrtol-error.c (xstrtol_error): Likewise.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
/* A more useful interface to strtol.
Copyright (C) 1995-1996, 1998-1999, 2001-2004, 2006-2025 Free Software
Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
#include <config.h>
#include "xstrtol-error.h"
#include <stdlib.h>
#include <error.h>
#include "exitfail.h"
#include "gettext.h"
#define _(msgid) dgettext (GNULIB_TEXT_DOMAIN, msgid)
#define N_(msgid) msgid
/* Report an error for an invalid integer in an option argument.
ERR is the error code returned by one of the xstrto* functions.
Use OPT_IDX to decide whether to print the short option string "C"
or "-C" or a long option string derived from LONG_OPTION. OPT_IDX
is -2 if the short option "C" was used, without any leading "-"; it
is -1 if the short option "-C" was used; otherwise it is an index
into LONG_OPTIONS, which should have a name preceded by two '-'
characters.
ARG is the option-argument containing the integer.
After reporting an error, exit with status EXIT_STATUS if it is
nonzero. */
static void
xstrtol_error (enum strtol_error err,
int opt_idx, char c, struct option const *long_options,
char const *arg,
int exit_status)
{
char const *hyphens = "--";
char const *msgid;
char const *option;
char option_buffer[2];
switch (err)
{
case LONGINT_OK: default:
abort ();
case LONGINT_INVALID:
msgid = N_("invalid %s%s argument '%s'");
break;
case LONGINT_INVALID_SUFFIX_CHAR:
case LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW:
msgid = N_("invalid suffix in %s%s argument '%s'");
break;
case LONGINT_OVERFLOW:
msgid = N_("%s%s argument '%s' too large");
break;
}
if (opt_idx < 0)
{
hyphens -= opt_idx;
option_buffer[0] = c;
option_buffer[1] = '\0';
option = option_buffer;
}
else
option = long_options[opt_idx].name;
error (exit_status, 0, dgettext (GNULIB_TEXT_DOMAIN, msgid),
hyphens, option, arg);
}
/* Like xstrtol_error, except exit with a failure status. */
void
xstrtol_fatal (enum strtol_error err,
int opt_idx, char c, struct option const *long_options,
char const *arg)
{
xstrtol_error (err, opt_idx, c, long_options, arg, exit_failure);
abort ();
}