2000-01-22 05:50:49 +00:00
|
|
|
/* Implementation of the dcngettext(3) function.
|
2021-01-02 19:32:25 +00:00
|
|
|
Copyright (C) 1995-2021 Free Software Foundation, Inc.
|
2000-01-22 05:50:49 +00:00
|
|
|
|
2014-12-10 12:03:53 +00:00
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2.1 of the License, or
|
|
|
|
(at your option) any later version.
|
2000-01-22 05:50:49 +00:00
|
|
|
|
2014-12-10 12:03:53 +00:00
|
|
|
This program is distributed in the hope that it will be useful,
|
2000-01-22 05:50:49 +00:00
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2014-12-10 12:03:53 +00:00
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU Lesser General Public License for more details.
|
2000-01-22 05:50:49 +00:00
|
|
|
|
2014-12-10 12:03:53 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
2000-01-22 05:50:49 +00:00
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include <config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "gettextP.h"
|
|
|
|
#ifdef _LIBC
|
|
|
|
# include <libintl.h>
|
|
|
|
#else
|
Update.
2001-03-17 Bruno Haible <haible@clisp.cons.org>
* intl/loadmsgcat.c (_nl_load_domain) [!_LIBC]: Use fstat, not fstat64.
2001-03-17 Bruno Haible <haible@clisp.cons.org>
* intl/gettextP.h (struct expression): Add operators lnot, less_than,
greater_than, less_or_equal, greater_or_equal. Replace args2/args3
union by a 'nargs' counter and an 'args[]' array.
* intl/plural.y: Don't include stdarg.h.
(new_exp): Take an array of arguments instead of varargs.
(new_exp_0, new_exp_1, new_exp_2, new_exp_3): New functions.
('?' ':'): Make right-associative.
(EQUOP2): New token, replaces '=' and '!'.
(CMPOP2): New token.
(ADDOP2): New token, replaces '+' and '-'.
(MULOP2): New token, replaces '*', '/' and '%'.
('!'): New token.
(exp): Add rules for CMPOP2 and '!'. Don't call YYABORT.
(start): Call YYABORT here.
(FREE_EXPRESSION): Update.
(yylex): Don't skip "\\n". Recognize comparison and '!' operators.
Update for new token symbols.
* intl/loadmsgcat.c (plvar, plone, germanic_plural,
init_germanic_plural): Update.
* intl/dcigettext.c (_nl_find_msg): Optimize for space.
(plural_eval): Recognize comparison and '!' operators. Optimize for
space.
2001-03-10 Bruno Haible <haible@clisp.cons.org>
* intl/loadmsgcat.c (_nl_load_domain): locale_charset() doesn't return
NULL any more.
2001-01-05 Bruno Haible <haible@clisp.cons.org>
* intl/loadmsgcat.c: Include headers needed for alloca().
(freea): New macro.
(_nl_load_domain): Add fallback code for platforms lacking alloca.
* intl/localealias.c: (ADD_BLOCK, FREE_BLOCK): Remove macros.
(freea): New macro.
(read_alias_file): Simplify fallback code for platforms lacking
alloca.
2001-01-07 Bruno Haible <haible@clisp.cons.org>
* intl/gettextP.h (__gettextdebug): Remove declaration.
(__gettext_free_exp, __gettextparse): Convert prototype to K&R C
syntax.
(gettext_free_exp__, gettextparse__): New non-libc declarations.
* intl/plural.y [!_LIBC]: Define gettextparse__, gettext_free_exp__,
not __gettextparse, __gettext_free_exp.
* intl/loadmsgcat.c [!_LIBC]: Use gettextparse__, not __gettextparse.
2001-02-24 Bruno Haible <haible@clisp.cons.org>
* intl/dcigettext.c: Update comment about HAVE_LOCALE_NULL.
2001-01-05 Bruno Haible <haible@clisp.cons.org>
* intl/loadmsgcat.c (_nl_load_domain): Add fallback code for platforms
lacking strtoul, like SunOS4.
2001-01-05 Bruno Haible <haible@clisp.cons.org>
* intl/l10nflist.c (_nl_normalize_codeset): Use tolower, not _tolower.
2001-01-05 Bruno Haible <haible@clisp.cons.org>
* intl/bindtextdom.c (set_binding_values): Convert prototype to K&R C
syntax.
* intl/dcigettext.c (transcmp): Convert to K&R C syntax.
* intl/explodename.c (_nl_find_language): Convert to K&R C syntax.
* intl/plural.y (__gettext_free_exp, yylex, yyerror): Convert to K&R C
syntax.
2001-01-07 Bruno Haible <haible@clisp.cons.org>
* intl/gettextP.h (gettext__, dgettext__, dcgettext__, textdomain__,
bindtextdomain__, bind_textdomain_codeset__): New declarations, from
old libgettext.h.
* intl/bindtextdom.c: Include libgnuintl.h instead of libgettext.h.
* intl/dcgettext.c: Likewise.
* intl/dcigettext.c: Likewise.
* intl/dcngettext.c: Likewise.
* intl/dngettext.c: Likewise.
* intl/finddomain.c: Likewise.
* intl/ngettext.c: Likewise.
* intl/textdomain.c: Likewise.
* intl/dgettext.c: Include libgnuintl.h instead of libgettext.h.
Include gettextP.h.
* intl/gettext.c: Likewise. Don't include locale.h.
2001-03-17 Bruno Haible <haible@clisp.cons.org>
* intl/gettextP.h (ZERO): New macro.
(struct binding): Always use ZERO.
* intl/bindtextdom.c (offsetof): Provide fallback for platforms that
lack it, like SunOS4.
(set_binding_values): Use offsetof, not sizeof.
* intl/dcigettext.c (offsetof): Provide fallback for platforms that
lack it, like SunOS4.
(ZERO): Remove macro.
(struct transmem_list): Use ZERO.
(DCIGETTEXT): Use offsetof, not sizeof.
2001-03-17 Bruno Haible <haible@clisp.cons.org>
* intl/gettextP.h: Include <stddef.h>. Include gettext.h, for
nls_uint32.
* intl/bindtextdom.c: Don't include gettext.h.
* intl/dcgettext.c: Likewise.
* intl/dcigettext.c: Likewise.
* intl/dcngettext.c: Likewise.
* intl/dngettext.c: Likewise.
* intl/finddomain.c: Likewise.
* intl/localealias.c: Likewise.
* intl/ngettext.c: Likewise.
* intl/plural.y: Likewise.
* intl/textdomain.c: Likewise.
2001-03-17 Bruno Haible <haible@clisp.cons.org>
* intl/gettext.h: Don't include <stdio.h>.
2001-03-17 Bruno Haible <haible@clisp.cons.org>
* intl/Makefile (CPPFLAGS): Set LOCALEDIR instead of GNULOCALEDIR.
* intl/dcigettext.c (_nl_default_dirname): Initialize with LOCALEDIR.
2001-03-20 01:00:20 +00:00
|
|
|
# include "libgnuintl.h"
|
2000-01-22 05:50:49 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/* @@ end of prolog @@ */
|
|
|
|
|
|
|
|
/* Names for the libintl functions are a problem. They must not clash
|
|
|
|
with existing names and they should follow ANSI C. But this source
|
|
|
|
code is also used in GNU C Library where the names have a __
|
|
|
|
prefix. So we have to make a difference here. */
|
|
|
|
#ifdef _LIBC
|
|
|
|
# define DCNGETTEXT __dcngettext
|
|
|
|
# define DCIGETTEXT __dcigettext
|
|
|
|
#else
|
2002-12-11 22:59:29 +00:00
|
|
|
# define DCNGETTEXT libintl_dcngettext
|
|
|
|
# define DCIGETTEXT libintl_dcigettext
|
2000-01-22 05:50:49 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
|
|
|
|
locale. */
|
|
|
|
char *
|
2014-12-10 12:03:53 +00:00
|
|
|
DCNGETTEXT (const char *domainname,
|
|
|
|
const char *msgid1, const char *msgid2, unsigned long int n,
|
|
|
|
int category)
|
2000-01-22 05:50:49 +00:00
|
|
|
{
|
|
|
|
return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
|
|
|
|
}
|
|
|
|
|
|
|
|
#ifdef _LIBC
|
|
|
|
/* Alias for function name in GNU C Library. */
|
|
|
|
weak_alias (__dcngettext, dcngettext);
|
|
|
|
#endif
|