summaryrefslogtreecommitdiffstats
path: root/intl
diff options
context:
space:
mode:
Diffstat (limited to 'intl')
-rw-r--r--intl/ChangeLog4
-rw-r--r--intl/Makefile.in24
-rw-r--r--intl/VERSION2
-rw-r--r--intl/bindtextdom.c21
-rwxr-xr-xintl/config.charset285
-rw-r--r--intl/dcgettext.c7
-rw-r--r--intl/dcigettext.c75
-rw-r--r--intl/dcngettext.c11
-rw-r--r--intl/dgettext.c9
-rw-r--r--intl/dngettext.c12
-rw-r--r--intl/eval-plural.h10
-rw-r--r--intl/explodename.c21
-rw-r--r--intl/finddomain.c9
-rw-r--r--intl/gettext.c5
-rw-r--r--intl/gettextP.h91
-rw-r--r--intl/gmo.h5
-rw-r--r--intl/hash-string.h17
-rw-r--r--intl/intl-compat.c44
-rw-r--r--intl/l10nflist.c62
-rw-r--r--intl/libgnuintl.h.in146
-rw-r--r--intl/loadinfo.h47
-rw-r--r--intl/loadmsgcat.c386
-rw-r--r--intl/localcharset.c2
-rw-r--r--intl/locale.alias12
-rw-r--r--intl/localealias.c29
-rw-r--r--intl/localename.c478
-rw-r--r--intl/log.c12
-rw-r--r--intl/ngettext.c7
-rw-r--r--intl/plural-exp.c8
-rw-r--r--intl/plural-exp.h24
-rw-r--r--intl/plural.c82
-rw-r--r--intl/plural.y52
-rw-r--r--intl/relocatable.c14
-rw-r--r--intl/relocatable.h10
-rw-r--r--intl/textdomain.c5
35 files changed, 1263 insertions, 765 deletions
diff --git a/intl/ChangeLog b/intl/ChangeLog
index eed2d21a4..751291929 100644
--- a/intl/ChangeLog
+++ b/intl/ChangeLog
@@ -1,4 +1,4 @@
-2003-05-22 GNU <bug-gnu-gettext@gnu.org>
+2004-01-29 GNU <bug-gnu-gettext@gnu.org>
- * Version 0.12.1 released.
+ * Version 0.14.1 released.
diff --git a/intl/Makefile.in b/intl/Makefile.in
index 882396481..05f15329e 100644
--- a/intl/Makefile.in
+++ b/intl/Makefile.in
@@ -73,6 +73,10 @@ HEADERS = \
eval-plural.h \
localcharset.h \
relocatable.h \
+ xsize.h \
+ printf-args.h printf-args.c \
+ printf-parse.h wprintf-parse.h printf-parse.c \
+ vasnprintf.h vasnwprintf.h vasnprintf.c \
os2compat.h \
libgnuintl.h.in
SOURCES = \
@@ -96,6 +100,7 @@ SOURCES = \
relocatable.c \
localename.c \
log.c \
+ printf.c \
osdep.c \
os2compat.c \
intl-compat.c
@@ -120,6 +125,7 @@ OBJECTS = \
relocatable.$lo \
localename.$lo \
log.$lo \
+ printf.$lo \
osdep.$lo \
intl-compat.$lo
DISTFILES.common = Makefile.in \
@@ -127,7 +133,8 @@ config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES)
DISTFILES.generated = plural.c
DISTFILES.normal = VERSION
DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \
-Makefile.vms libgnuintl.h.msvc-shared README.woe32 Makefile.msvc
+libgnuintl.h_vms Makefile.vms \
+libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc
DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h
@@ -155,9 +162,9 @@ libintl.la libgnuintl.la: $(OBJECTS)
# according to the libtool documentation, section "Library interface versions".
# Maintainers of other packages that include the intl directory must *not*
# change these values.
-LTV_CURRENT=5
+LTV_CURRENT=7
LTV_REVISION=0
-LTV_AGE=3
+LTV_AGE=4
.SUFFIXES:
.SUFFIXES: .c .y .o .lo .sin .sed
@@ -209,6 +216,8 @@ localename.lo: $(srcdir)/localename.c
$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c
log.lo: $(srcdir)/log.c
$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c
+printf.lo: $(srcdir)/printf.c
+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c
osdep.lo: $(srcdir)/osdep.c
$(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c
intl-compat.lo: $(srcdir)/intl-compat.c
@@ -224,7 +233,11 @@ ref-del.sed: $(srcdir)/ref-del.sin
INCLUDES = -I. -I$(srcdir) -I..
libgnuintl.h: $(srcdir)/libgnuintl.h.in
- cp $(srcdir)/libgnuintl.h.in libgnuintl.h
+ sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
+ -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
+ -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
+ -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
+ < $(srcdir)/libgnuintl.h.in > libgnuintl.h
libintl.h: libgnuintl.h
cp libgnuintl.h libintl.h
@@ -250,7 +263,7 @@ install-exec: all
$(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
if test "@RELOCATABLE@" = yes; then \
dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \
- if test -n "$dependencies"; then \
+ if test -n "$$dependencies"; then \
rm -f $(DESTDIR)$(libdir)/libintl.la; \
fi; \
fi; \
@@ -412,6 +425,7 @@ dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h
dcigettext.$lo: $(srcdir)/eval-plural.h
localcharset.$lo: $(srcdir)/localcharset.h
localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h
+printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c
tags: TAGS
diff --git a/intl/VERSION b/intl/VERSION
index 130318357..b4b846ca7 100644
--- a/intl/VERSION
+++ b/intl/VERSION
@@ -1 +1 @@
-GNU gettext library from gettext-0.12.1
+GNU gettext library from gettext-0.14.1
diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c
index 250f5e863..dcdc40085 100644
--- a/intl/bindtextdom.c
+++ b/intl/bindtextdom.c
@@ -1,5 +1,5 @@
/* Implementation of the bindtextdomain(3) function
- Copyright (C) 1995-1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -86,11 +86,6 @@ __libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset
#endif
-/* Prototypes for local functions. */
-static void set_binding_values PARAMS ((const char *domainname,
- const char **dirnamep,
- const char **codesetp));
-
/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
to be used for the DOMAINNAME message catalog.
If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
@@ -98,10 +93,8 @@ static void set_binding_values PARAMS ((const char *domainname,
If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
modified nor returned. */
static void
-set_binding_values (domainname, dirnamep, codesetp)
- const char *domainname;
- const char **dirnamep;
- const char **codesetp;
+set_binding_values (const char *domainname,
+ const char **dirnamep, const char **codesetp)
{
struct binding *binding;
int modified;
@@ -348,9 +341,7 @@ set_binding_values (domainname, dirnamep, codesetp)
/* Specify that the DOMAINNAME message catalog will be found
in DIRNAME rather than in the system locale data base. */
char *
-BINDTEXTDOMAIN (domainname, dirname)
- const char *domainname;
- const char *dirname;
+BINDTEXTDOMAIN (const char *domainname, const char *dirname)
{
set_binding_values (domainname, &dirname, NULL);
return (char *) dirname;
@@ -359,9 +350,7 @@ BINDTEXTDOMAIN (domainname, dirname)
/* Specify the character encoding in which the messages from the
DOMAINNAME message catalog will be returned. */
char *
-BIND_TEXTDOMAIN_CODESET (domainname, codeset)
- const char *domainname;
- const char *codeset;
+BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset)
{
set_binding_values (domainname, NULL, &codeset);
return (char *) codeset;
diff --git a/intl/config.charset b/intl/config.charset
index 32becece9..43d45fb75 100755
--- a/intl/config.charset
+++ b/intl/config.charset
@@ -1,7 +1,7 @@
#! /bin/sh
# Output a system dependent table of character encoding aliases.
#
-# Copyright (C) 2000-2003 Free Software Foundation, Inc.
+# Copyright (C) 2000-2004 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU Library General Public License as published
@@ -30,77 +30,77 @@
# MIME charset name is preferred.
# The current list of GNU canonical charset names is as follows.
#
-# name used by which systems a MIME name?
-# ASCII, ANSI_X3.4-1968 glibc solaris freebsd
-# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes
-# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes
-# ISO-8859-3 glibc solaris yes
-# ISO-8859-4 osf solaris freebsd yes
-# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes
-# ISO-8859-6 glibc aix hpux solaris yes
-# ISO-8859-7 glibc aix hpux irix osf solaris yes
-# ISO-8859-8 glibc aix hpux osf solaris yes
-# ISO-8859-9 glibc aix hpux irix osf solaris yes
-# ISO-8859-13 glibc
-# ISO-8859-14 glibc
-# ISO-8859-15 glibc aix osf solaris freebsd
-# KOI8-R glibc solaris freebsd yes
-# KOI8-U glibc freebsd yes
-# KOI8-T glibc
-# CP437 dos
-# CP775 dos
-# CP850 aix osf dos
-# CP852 dos
-# CP855 dos
-# CP856 aix
-# CP857 dos
-# CP861 dos
-# CP862 dos
-# CP864 dos
-# CP865 dos
-# CP866 freebsd dos
-# CP869 dos
-# CP874 woe32 dos
-# CP922 aix
-# CP932 aix woe32 dos
-# CP943 aix
-# CP949 osf woe32 dos
-# CP950 woe32 dos
-# CP1046 aix
-# CP1124 aix
-# CP1125 dos
-# CP1129 aix
-# CP1250 woe32
-# CP1251 glibc solaris woe32
-# CP1252 aix woe32
-# CP1253 woe32
-# CP1254 woe32
-# CP1255 glibc woe32
-# CP1256 woe32
-# CP1257 woe32
-# GB2312 glibc aix hpux irix solaris freebsd yes
-# EUC-JP glibc aix hpux irix osf solaris freebsd yes
-# EUC-KR glibc aix hpux irix osf solaris freebsd yes
-# EUC-TW glibc aix hpux irix osf solaris
-# BIG5 glibc aix hpux osf solaris freebsd yes
-# BIG5-HKSCS glibc solaris
-# GBK glibc aix osf solaris woe32 dos
-# GB18030 glibc solaris
-# SHIFT_JIS hpux osf solaris freebsd yes
-# JOHAB glibc solaris woe32
-# TIS-620 glibc aix hpux osf solaris
-# VISCII glibc yes
-# TCVN5712-1 glibc
-# GEORGIAN-PS glibc
-# HP-ROMAN8 hpux
-# HP-ARABIC8 hpux
-# HP-GREEK8 hpux
-# HP-HEBREW8 hpux
-# HP-TURKISH8 hpux
-# HP-KANA8 hpux
-# DEC-KANJI osf
-# DEC-HANYU osf
-# UTF-8 glibc aix hpux osf solaris yes
+# name MIME? used by which systems
+# ASCII, ANSI_X3.4-1968 glibc solaris freebsd darwin
+# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd darwin
+# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd darwin
+# ISO-8859-3 Y glibc solaris
+# ISO-8859-4 Y osf solaris freebsd darwin
+# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd darwin
+# ISO-8859-6 Y glibc aix hpux solaris
+# ISO-8859-7 Y glibc aix hpux irix osf solaris
+# ISO-8859-8 Y glibc aix hpux osf solaris
+# ISO-8859-9 Y glibc aix hpux irix osf solaris
+# ISO-8859-13 glibc
+# ISO-8859-14 glibc
+# ISO-8859-15 glibc aix osf solaris freebsd
+# KOI8-R Y glibc solaris freebsd darwin
+# KOI8-U Y glibc freebsd darwin
+# KOI8-T glibc
+# CP437 dos
+# CP775 dos
+# CP850 aix osf dos
+# CP852 dos
+# CP855 dos
+# CP856 aix
+# CP857 dos
+# CP861 dos
+# CP862 dos
+# CP864 dos
+# CP865 dos
+# CP866 freebsd darwin dos
+# CP869 dos
+# CP874 woe32 dos
+# CP922 aix
+# CP932 aix woe32 dos
+# CP943 aix
+# CP949 osf woe32 dos
+# CP950 woe32 dos
+# CP1046 aix
+# CP1124 aix
+# CP1125 dos
+# CP1129 aix
+# CP1250 woe32
+# CP1251 glibc solaris darwin woe32
+# CP1252 aix woe32
+# CP1253 woe32
+# CP1254 woe32
+# CP1255 glibc woe32
+# CP1256 woe32
+# CP1257 woe32
+# GB2312 Y glibc aix hpux irix solaris freebsd darwin
+# EUC-JP Y glibc aix hpux irix osf solaris freebsd darwin
+# EUC-KR Y glibc aix hpux irix osf solaris freebsd darwin
+# EUC-TW glibc aix hpux irix osf solaris
+# BIG5 Y glibc aix hpux osf solaris freebsd darwin
+# BIG5-HKSCS glibc solaris
+# GBK glibc aix osf solaris woe32 dos
+# GB18030 glibc solaris
+# SHIFT_JIS Y hpux osf solaris freebsd darwin
+# JOHAB glibc solaris woe32
+# TIS-620 glibc aix hpux osf solaris
+# VISCII Y glibc
+# TCVN5712-1 glibc
+# GEORGIAN-PS glibc
+# HP-ROMAN8 hpux
+# HP-ARABIC8 hpux
+# HP-GREEK8 hpux
+# HP-HEBREW8 hpux
+# HP-TURKISH8 hpux
+# HP-KANA8 hpux
+# DEC-KANJI osf
+# DEC-HANYU osf
+# UTF-8 Y glibc aix hpux osf solaris
#
# Note: Names which are not marked as being a MIME name should not be used in
# Internet protocols for information interchange (mail, news, etc.).
@@ -121,6 +121,105 @@ echo "# It was automatically generated from config.charset."
# List of references, updated during installation:
echo "# Packages using this file: "
case "$os" in
+ linux-gnulibc1*)
+ # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "C ASCII"
+ echo "POSIX ASCII"
+ for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
+ en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
+ en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
+ es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
+ et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
+ fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
+ it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
+ sv_FI sv_SE; do
+ echo "$l ISO-8859-1"
+ echo "$l.iso-8859-1 ISO-8859-1"
+ echo "$l.iso-8859-15 ISO-8859-15"
+ echo "$l.iso-8859-15@euro ISO-8859-15"
+ echo "$l@euro ISO-8859-15"
+ echo "$l.cp-437 CP437"
+ echo "$l.cp-850 CP850"
+ echo "$l.cp-1252 CP1252"
+ echo "$l.cp-1252@euro CP1252"
+ #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
+ echo "$l.utf-8 UTF-8"
+ echo "$l.utf-8@euro UTF-8"
+ done
+ for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
+ sl_SI sr sr_CS sr_YU; do
+ echo "$l ISO-8859-2"
+ echo "$l.iso-8859-2 ISO-8859-2"
+ echo "$l.cp-852 CP852"
+ echo "$l.cp-1250 CP1250"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in mk mk_MK ru ru_RU; do
+ echo "$l ISO-8859-5"
+ echo "$l.iso-8859-5 ISO-8859-5"
+ echo "$l.koi8-r KOI8-R"
+ echo "$l.cp-866 CP866"
+ echo "$l.cp-1251 CP1251"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in ar ar_SA; do
+ echo "$l ISO-8859-6"
+ echo "$l.iso-8859-6 ISO-8859-6"
+ echo "$l.cp-864 CP864"
+ #echo "$l.cp-868 CP868" # not a commonly used encoding
+ echo "$l.cp-1256 CP1256"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in el el_GR gr gr_GR; do
+ echo "$l ISO-8859-7"
+ echo "$l.iso-8859-7 ISO-8859-7"
+ echo "$l.cp-869 CP869"
+ echo "$l.cp-1253 CP1253"
+ echo "$l.cp-1253@euro CP1253"
+ echo "$l.utf-8 UTF-8"
+ echo "$l.utf-8@euro UTF-8"
+ done
+ for l in he he_IL iw iw_IL; do
+ echo "$l ISO-8859-8"
+ echo "$l.iso-8859-8 ISO-8859-8"
+ echo "$l.cp-862 CP862"
+ echo "$l.cp-1255 CP1255"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in tr tr_TR; do
+ echo "$l ISO-8859-9"
+ echo "$l.iso-8859-9 ISO-8859-9"
+ echo "$l.cp-857 CP857"
+ echo "$l.cp-1254 CP1254"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in lt lt_LT lv lv_LV; do
+ #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
+ echo "$l ISO-8859-13"
+ done
+ for l in ru_UA uk uk_UA; do
+ echo "$l KOI8-U"
+ done
+ for l in zh zh_CN; do
+ #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
+ echo "$l GB2312"
+ done
+ for l in ja ja_JP ja_JP.EUC; do
+ echo "$l EUC-JP"
+ done
+ for l in ko ko_KR; do
+ echo "$l EUC-KR"
+ done
+ for l in th th_TH; do
+ echo "$l TIS-620"
+ done
+ for l in fa fa_IR; do
+ #echo "$l ISIRI-3342" # a broken encoding
+ echo "$l.utf-8 UTF-8"
+ done
+ ;;
linux* | *-gnu*)
# With glibc-2.1 or newer, we don't need any canonicalization,
# because glibc has iconv and both glibc and libiconv support all
@@ -297,6 +396,47 @@ case "$os" in
echo "BIG5 BIG5"
echo "SJIS SHIFT_JIS"
;;
+ darwin*)
+ # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "C ASCII"
+ for l in en_AU en_CA en_GB en_US la_LN; do
+ echo "$l.US-ASCII ASCII"
+ done
+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
+ nl_NL no_NO pt_PT sv_SE; do
+ echo "$l ISO-8859-1"
+ echo "$l.ISO8859-1 ISO-8859-1"
+ echo "$l.ISO8859-15 ISO-8859-15"
+ done
+ for l in la_LN; do
+ echo "$l.ISO8859-1 ISO-8859-1"
+ echo "$l.ISO8859-15 ISO-8859-15"
+ done
+ for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
+ echo "$l.ISO8859-2 ISO-8859-2"
+ done
+ for l in la_LN lt_LT; do
+ echo "$l.ISO8859-4 ISO-8859-4"
+ done
+ for l in ru_RU; do
+ echo "$l.KOI8-R KOI8-R"
+ echo "$l.ISO8859-5 ISO-8859-5"
+ echo "$l.CP866 CP866"
+ done
+ for l in bg_BG; do
+ echo "$l.CP1251 CP1251"
+ done
+ echo "uk_UA.KOI8-U KOI8-U"
+ echo "zh_TW.BIG5 BIG5"
+ echo "zh_TW.Big5 BIG5"
+ echo "zh_CN.EUC GB2312"
+ echo "ja_JP.EUC EUC-JP"
+ echo "ja_JP.SJIS SHIFT_JIS"
+ echo "ko_KR.EUC EUC-KR"
+ ;;
beos*)
# BeOS has a single locale, and it has UTF-8 encoding.
echo "* UTF-8"
@@ -410,6 +550,7 @@ case "$os" in
echo "sq CP852"
echo "sq_AL CP852"
echo "sr CP852" # CP852 or CP866 or CP855 ??
+ echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
# ISO-8859-3 languages
echo "mt CP850"
diff --git a/intl/dcgettext.c b/intl/dcgettext.c
index ca6a1c82d..850acdee9 100644
--- a/intl/dcgettext.c
+++ b/intl/dcgettext.c
@@ -1,5 +1,5 @@
/* Implementation of the dcgettext(3) function.
- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -44,10 +44,7 @@
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
locale. */
char *
-DCGETTEXT (domainname, msgid, category)
- const char *domainname;
- const char *msgid;
- int category;
+DCGETTEXT (const char *domainname, const char *msgid, int category)
{
return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);
}
diff --git a/intl/dcigettext.c b/intl/dcigettext.c
index f6edb95c0..35238e2cb 100644
--- a/intl/dcigettext.c
+++ b/intl/dcigettext.c
@@ -148,13 +148,17 @@ extern int errno;
char *getwd ();
# define getcwd(buf, max) getwd (buf)
# else
+# if VMS
+# define getcwd(buf, max) (getcwd) (buf, max, 0)
+# else
char *getcwd ();
+# endif
# endif
# ifndef HAVE_STPCPY
-static char *stpcpy PARAMS ((char *dest, const char *src));
+static char *stpcpy (char *dest, const char *src);
# endif
# ifndef HAVE_MEMPCPY
-static void *mempcpy PARAMS ((void *dest, const void *src, size_t n));
+static void *mempcpy (void *dest, const void *src, size_t n);
# endif
#endif
@@ -248,11 +252,8 @@ static void *root;
# endif
/* Function to compare two entries in the table of known translations. */
-static int transcmp PARAMS ((const void *p1, const void *p2));
static int
-transcmp (p1, p2)
- const void *p1;
- const void *p2;
+transcmp (const void *p1, const void *p2)
{
const struct known_translation_t *s1;
const struct known_translation_t *s2;
@@ -304,19 +305,18 @@ INTVARDEF (_nl_default_dirname)
struct binding *_nl_domain_bindings;
/* Prototypes for local functions. */
-static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain,
- unsigned long int n,
- const char *translation,
- size_t translation_len))
+static char *plural_lookup (struct loaded_l10nfile *domain,
+ unsigned long int n,
+ const char *translation, size_t translation_len)
internal_function;
-static const char *guess_category_value PARAMS ((int category,
- const char *categoryname))
+static const char *guess_category_value (int category,
+ const char *categoryname)
internal_function;
#ifdef _LIBC
# include "../locale/localeinfo.h"
# define category_to_name(category) _nl_category_names[category]
#else
-static const char *category_to_name PARAMS ((int category)) internal_function;
+static const char *category_to_name (int category) internal_function;
#endif
@@ -424,13 +424,8 @@ static int enable_secure;
CATEGORY locale and, if PLURAL is nonzero, search over string
depending on the plural form determined by N. */
char *
-DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)
- const char *domainname;
- const char *msgid1;
- const char *msgid2;
- int plural;
- unsigned long int n;
- int category;
+DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
+ int plural, unsigned long int n, int category)
{
#ifndef HAVE_ALLOCA
struct block_list *block_list = NULL;
@@ -703,11 +698,10 @@ DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)
#ifndef _LIBC
if (!ENABLE_SECURE)
{
- extern void _nl_log_untranslated PARAMS ((const char *logfilename,
- const char *domainname,
- const char *msgid1,
- const char *msgid2,
- int plural));
+ extern void _nl_log_untranslated (const char *logfilename,
+ const char *domainname,
+ const char *msgid1, const char *msgid2,
+ int plural);
const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED");
if (logfilename != NULL && logfilename[0] != '\0')
@@ -724,11 +718,9 @@ DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)
char *
internal_function
-_nl_find_msg (domain_file, domainbinding, msgid, lengthp)
- struct loaded_l10nfile *domain_file;
- struct binding *domainbinding;
- const char *msgid;
- size_t *lengthp;
+_nl_find_msg (struct loaded_l10nfile *domain_file,
+ struct binding *domainbinding, const char *msgid,
+ size_t *lengthp)
{
struct loaded_domain *domain;
nls_uint32 nstrings;
@@ -1035,11 +1027,8 @@ _nl_find_msg (domain_file, domainbinding, msgid, lengthp)
/* Look up a plural variant. */
static char *
internal_function
-plural_lookup (domain, n, translation, translation_len)
- struct loaded_l10nfile *domain;
- unsigned long int n;
- const char *translation;
- size_t translation_len;
+plural_lookup (struct loaded_l10nfile *domain, unsigned long int n,
+ const char *translation, size_t translation_len)
{
struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;
unsigned long int index;
@@ -1076,8 +1065,7 @@ plural_lookup (domain, n, translation, translation_len)
/* Return string representation of locale CATEGORY. */
static const char *
internal_function
-category_to_name (category)
- int category;
+category_to_name (int category)
{
const char *retval;
@@ -1137,9 +1125,7 @@ category_to_name (category)
/* Guess value of current locale from value of the environment variables. */
static const char *
internal_function
-guess_category_value (category, categoryname)
- int category;
- const char *categoryname;
+guess_category_value (int category, const char *categoryname)
{
const char *language;
const char *retval;
@@ -1180,9 +1166,7 @@ guess_category_value (category, categoryname)
to be defined. */
#if !_LIBC && !HAVE_STPCPY
static char *
-stpcpy (dest, src)
- char *dest;
- const char *src;
+stpcpy (char *dest, const char *src)
{
while ((*dest++ = *src++) != '\0')
/* Do nothing. */ ;
@@ -1192,10 +1176,7 @@ stpcpy (dest, src)
#if !_LIBC && !HAVE_MEMPCPY
static void *
-mempcpy (dest, src, n)
- void *dest;
- const void *src;
- size_t n;
+mempcpy (void *dest, const void *src, size_t n)
{
return (void *) ((char *) memcpy (dest, src, n) + n);
}
diff --git a/intl/dcngettext.c b/intl/dcngettext.c
index 3a3404e2c..48a3e09e0 100644
--- a/intl/dcngettext.c
+++ b/intl/dcngettext.c
@@ -1,5 +1,5 @@
/* Implementation of the dcngettext(3) function.
- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -44,12 +44,9 @@
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
locale. */
char *
-DCNGETTEXT (domainname, msgid1, msgid2, n, category)
- const char *domainname;
- const char *msgid1;
- const char *msgid2;
- unsigned long int n;
- int category;
+DCNGETTEXT (const char *domainname,
+ const char *msgid1, const char *msgid2, unsigned long int n,
+ int category)
{
return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
}
diff --git a/intl/dgettext.c b/intl/dgettext.c
index cf5b4037f..b64b0f5d3 100644
--- a/intl/dgettext.c
+++ b/intl/dgettext.c
@@ -1,5 +1,5 @@
/* Implementation of the dgettext(3) function.
- Copyright (C) 1995-1997, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -20,9 +20,10 @@
# include <config.h>
#endif
+#include "gettextP.h"
+
#include <locale.h>
-#include "gettextP.h"
#ifdef _LIBC
# include <libintl.h>
#else
@@ -46,9 +47,7 @@
/* Look up MSGID in the DOMAINNAME message catalog of the current
LC_MESSAGES locale. */
char *
-DGETTEXT (domainname, msgid)
- const char *domainname;
- const char *msgid;
+DGETTEXT (const char *domainname, const char *msgid)
{
return DCGETTEXT (domainname, msgid, LC_MESSAGES);
}
diff --git a/intl/dngettext.c b/intl/dngettext.c
index 67fd030f2..7815637f0 100644
--- a/intl/dngettext.c
+++ b/intl/dngettext.c
@@ -1,5 +1,5 @@
/* Implementation of the dngettext(3) function.
- Copyright (C) 1995-1997, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -20,9 +20,10 @@
# include <config.h>
#endif
+#include "gettextP.h"
+
#include <locale.h>
-#include "gettextP.h"
#ifdef _LIBC
# include <libintl.h>
#else
@@ -46,11 +47,8 @@
/* Look up MSGID in the DOMAINNAME message catalog of the current
LC_MESSAGES locale and skip message according to the plural form. */
char *
-DNGETTEXT (domainname, msgid1, msgid2, n)
- const char *domainname;
- const char *msgid1;
- const char *msgid2;
- unsigned long int n;
+DNGETTEXT (const char *domainname,
+ const char *msgid1, const char *msgid2, unsigned long int n)
{
return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);
}
diff --git a/intl/eval-plural.h b/intl/eval-plural.h
index 19c7ca6ae..01bd5af5f 100644
--- a/intl/eval-plural.h
+++ b/intl/eval-plural.h
@@ -1,5 +1,5 @@
/* Plural expression evaluation.
- Copyright (C) 2000-2002 Free Software Foundation, Inc.
+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -21,16 +21,10 @@
#endif
/* Evaluate the plural expression and return an index value. */
-STATIC unsigned long int plural_eval PARAMS ((struct expression *pexp,
- unsigned long int n))
- internal_function;
-
STATIC
unsigned long int
internal_function
-plural_eval (pexp, n)
- struct expression *pexp;
- unsigned long int n;
+plural_eval (struct expression *pexp, unsigned long int n)
{
switch (pexp->nargs)
{
diff --git a/intl/explodename.c b/intl/explodename.c
index 2985064c9..52c25e727 100644
--- a/intl/explodename.c
+++ b/intl/explodename.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1998, 2000-2001, 2003 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
This program is free software; you can redistribute it and/or modify it
@@ -38,8 +38,7 @@
/* @@ end of prolog @@ */
char *
-_nl_find_language (name)
- const char *name;
+_nl_find_language (const char *name)
{
while (name[0] != '\0' && name[0] != '_' && name[0] != '@'
&& name[0] != '+' && name[0] != ',')
@@ -50,17 +49,11 @@ _nl_find_language (name)
int
-_nl_explode_name (name, language, modifier, territory, codeset,
- normalized_codeset, special, sponsor, revision)
- char *name;
- const char **language;
- const char **modifier;
- const char **territory;
- const char **codeset;
- const char **normalized_codeset;
- const char **special;
- const char **sponsor;
- const char **revision;
+_nl_explode_name (char *name,
+ const char **language, const char **modifier,
+ const char **territory, const char **codeset,
+ const char **normalized_codeset, const char **special,
+ const char **sponsor, const char **revision)
{
enum { undecided, xpg, cen } syntax;
char *cp;
diff --git a/intl/finddomain.c b/intl/finddomain.c
index d24276442..4992a8c9e 100644
--- a/intl/finddomain.c
+++ b/intl/finddomain.c
@@ -1,5 +1,5 @@
/* Handle list of needed message catalogs
- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1995-1999, 2000-2001, 2003 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@gnu.org>, 1995.
This program is free software; you can redistribute it and/or modify it
@@ -47,11 +47,8 @@ static struct loaded_l10nfile *_nl_loaded_domains;
established bindings. */
struct loaded_l10nfile *
internal_function
-_nl_find_domain (dirname, locale, domainname, domainbinding)
- const char *dirname;
- char *locale;
- const char *domainname;
- struct binding *domainbinding;
+_nl_find_domain (const char *dirname, char *locale,
+ const char *domainname, struct binding *domainbinding)
{
struct loaded_l10nfile *retval;
const char *language;
diff --git a/intl/gettext.c b/intl/gettext.c
index 43d689f55..92c42faa7 100644
--- a/intl/gettext.c
+++ b/intl/gettext.c
@@ -1,5 +1,5 @@
/* Implementation of gettext(3) function.
- Copyright (C) 1995, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -52,8 +52,7 @@
LC_MESSAGES locale. If not found, returns MSGID itself (the default
text). */
char *
-GETTEXT (msgid)
- const char *msgid;
+GETTEXT (const char *msgid)
{
return DCGETTEXT (NULL, msgid, LC_MESSAGES);
}
diff --git a/intl/gettextP.h b/intl/gettextP.h
index f1748a356..4d66c3de3 100644
--- a/intl/gettextP.h
+++ b/intl/gettextP.h
@@ -36,14 +36,6 @@
/* @@ end of prolog @@ */
-#ifndef PARAMS
-# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
-# define PARAMS(args) args
-# else
-# define PARAMS(args) ()
-# endif
-#endif
-
#ifndef internal_function
# define internal_function
#endif
@@ -159,64 +151,63 @@ struct binding
extern int _nl_msg_cat_cntr;
#ifndef _LIBC
-const char *_nl_locale_name PARAMS ((int category, const char *categoryname));
+const char *_nl_locale_name (int category, const char *categoryname);
#endif
-struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
- char *__locale,
- const char *__domainname,
- struct binding *__domainbinding))
+struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale,
+ const char *__domainname,
+ struct binding *__domainbinding)
internal_function;
-void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain,
- struct binding *__domainbinding))
+void _nl_load_domain (struct loaded_l10nfile *__domain,
+ struct binding *__domainbinding)
internal_function;
-void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
+void _nl_unload_domain (struct loaded_domain *__domain)
internal_function;
-const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file,
- struct loaded_domain *__domain,
- struct binding *__domainbinding))
+const char *_nl_init_domain_conv (struct loaded_l10nfile *__domain_file,
+ struct loaded_domain *__domain,
+ struct binding *__domainbinding)
internal_function;
-void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain))
+void _nl_free_domain_conv (struct loaded_domain *__domain)
internal_function;
-char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file,
- struct binding *domainbinding,
- const char *msgid, size_t *lengthp))
+char *_nl_find_msg (struct loaded_l10nfile *domain_file,
+ struct binding *domainbinding, const char *msgid,
+ size_t *lengthp)
internal_function;
#ifdef _LIBC
-extern char *__gettext PARAMS ((const char *__msgid));
-extern char *__dgettext PARAMS ((const char *__domainname,
- const char *__msgid));
-extern char *__dcgettext PARAMS ((const char *__domainname,
- const char *__msgid, int __category));
-extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2,
- unsigned long int __n));
-extern char *__dngettext PARAMS ((const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int n));
-extern char *__dcngettext PARAMS ((const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category));
-extern char *__dcigettext PARAMS ((const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- int __plural, unsigned long int __n,
- int __category));
-extern char *__textdomain PARAMS ((const char *__domainname));
-extern char *__bindtextdomain PARAMS ((const char *__domainname,
- const char *__dirname));
-extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname,
- const char *__codeset));
+extern char *__gettext (const char *__msgid);
+extern char *__dgettext (const char *__domainname, const char *__msgid);
+extern char *__dcgettext (const char *__domainname, const char *__msgid,
+ int __category);
+extern char *__ngettext (const char *__msgid1, const char *__msgid2,
+ unsigned long int __n);
+extern char *__dngettext (const char *__domainname,
+ const char *__msgid1, const char *__msgid2,
+ unsigned long int n);
+extern char *__dcngettext (const char *__domainname,
+ const char *__msgid1, const char *__msgid2,
+ unsigned long int __n, int __category);
+extern char *__dcigettext (const char *__domainname,
+ const char *__msgid1, const char *__msgid2,
+ int __plural, unsigned long int __n,
+ int __category);
+extern char *__textdomain (const char *__domainname);
+extern char *__bindtextdomain (const char *__domainname,
+ const char *__dirname);
+extern char *__bind_textdomain_codeset (const char *__domainname,
+ const char *__codeset);
#else
/* Declare the exported libintl_* functions, in a way that allows us to
call them under their real name. */
+# undef _INTL_REDIRECT_INLINE
+# undef _INTL_REDIRECT_MACROS
# define _INTL_REDIRECT_MACROS
# include "libgnuintl.h"
-extern char *libintl_dcigettext PARAMS ((const char *__domainname,
- const char *__msgid1,
- const char *__msgid2,
- int __plural, unsigned long int __n,
- int __category));
+extern char *libintl_dcigettext (const char *__domainname,
+ const char *__msgid1, const char *__msgid2,
+ int __plural, unsigned long int __n,
+ int __category);
#endif
/* @@ begin of epilog @@ */
diff --git a/intl/gmo.h b/intl/gmo.h
index d1fe4d6b8..e7c9cc14b 100644
--- a/intl/gmo.h
+++ b/intl/gmo.h
@@ -1,5 +1,5 @@
/* Description of GNU message catalog format: general file layout.
- Copyright (C) 1995, 1997, 2000-2002 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1997, 2000-2002, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -29,6 +29,7 @@
/* Revision number of the currently used .mo (binary) file format. */
#define MO_REVISION_NUMBER 0
+#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1
/* The following contortions are an attempt to use the C preprocessor
to determine an unsigned integral type that is 32 bits wide. An
@@ -76,7 +77,7 @@ struct mo_file_header
/* The revision number of the file format. */
nls_uint32 revision;
- /* The following are only used in .mo files with major revision 0. */
+ /* The following are only used in .mo files with major revision 0 or 1. */
/* The number of strings pairs. */
nls_uint32 nstrings;
diff --git a/intl/hash-string.h b/intl/hash-string.h
index b267a8778..093e3b1c1 100644
--- a/intl/hash-string.h
+++ b/intl/hash-string.h
@@ -1,5 +1,5 @@
/* Description of GNU message catalog format: string hashing function.
- Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1997-1998, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -18,14 +18,6 @@
/* @@ end of prolog @@ */
-#ifndef PARAMS
-# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
-# define PARAMS(Args) Args
-# else
-# define PARAMS(Args) ()
-# endif
-#endif
-
/* We assume to have `unsigned long int' value with at least 32 bits. */
#define HASHWORDBITS 32
@@ -33,11 +25,8 @@
/* Defines the so called `hashpjw' function by P.J. Weinberger
[see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
1986, 1987 Bell Telephone Laboratories, Inc.] */
-static unsigned long int hash_string PARAMS ((const char *__str_param));
-
static inline unsigned long int
-hash_string (str_param)
- const char *str_param;
+hash_string (const char *str_param)
{
unsigned long int hval, g;
const char *str = str_param;
@@ -47,7 +36,7 @@ hash_string (str_param)
while (*str != '\0')
{
hval <<= 4;
- hval += (unsigned long int) *str++;
+ hval += (unsigned char) *str++;
g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
if (g != 0)
{
diff --git a/intl/intl-compat.c b/intl/intl-compat.c
index 36b7af0f8..96f9d955d 100644
--- a/intl/intl-compat.c
+++ b/intl/intl-compat.c
@@ -58,8 +58,7 @@
DLL_EXPORTED
char *
-gettext (msgid)
- const char *msgid;
+gettext (const char *msgid)
{
return libintl_gettext (msgid);
}
@@ -67,9 +66,7 @@ gettext (msgid)
DLL_EXPORTED
char *
-dgettext (domainname, msgid)
- const char *domainname;
- const char *msgid;
+dgettext (const char *domainname, const char *msgid)
{
return libintl_dgettext (domainname, msgid);
}
@@ -77,10 +74,7 @@ dgettext (domainname, msgid)
DLL_EXPORTED
char *
-dcgettext (domainname, msgid, category)
- const char *domainname;
- const char *msgid;
- int category;
+dcgettext (const char *domainname, const char *msgid, int category)
{
return libintl_dcgettext (domainname, msgid, category);
}
@@ -88,10 +82,7 @@ dcgettext (domainname, msgid, category)
DLL_EXPORTED
char *
-ngettext (msgid1, msgid2, n)
- const char *msgid1;
- const char *msgid2;
- unsigned long int n;
+ngettext (const char *msgid1, const char *msgid2, unsigned long int n)
{
return libintl_ngettext (msgid1, msgid2, n);
}
@@ -99,11 +90,8 @@ ngettext (msgid1, msgid2, n)
DLL_EXPORTED
char *
-dngettext (domainname, msgid1, msgid2, n)
- const char *domainname;
- const char *msgid1;
- const char *msgid2;
- unsigned long int n;
+dngettext (const char *domainname,
+ const char *msgid1, const char *msgid2, unsigned long int n)
{
return libintl_dngettext (domainname, msgid1, msgid2, n);
}
@@ -111,12 +99,9 @@ dngettext (domainname, msgid1, msgid2, n)
DLL_EXPORTED
char *
-dcngettext (domainname, msgid1, msgid2, n, category)
- const char *domainname;
- const char *msgid1;
- const char *msgid2;
- unsigned long int n;
- int category;
+dcngettext (const char *domainname,
+ const char *msgid1, const char *msgid2, unsigned long int n,
+ int category)
{
return libintl_dcngettext (domainname, msgid1, msgid2, n, category);
}
@@ -124,8 +109,7 @@ dcngettext (domainname, msgid1, msgid2, n, category)
DLL_EXPORTED
char *
-textdomain (domainname)
- const char *domainname;
+textdomain (const char *domainname)
{
return libintl_textdomain (domainname);
}
@@ -133,9 +117,7 @@ textdomain (domainname)
DLL_EXPORTED
char *
-bindtextdomain (domainname, dirname)
- const char *domainname;
- const char *dirname;
+bindtextdomain (const char *domainname, const char *dirname)
{
return libintl_bindtextdomain (domainname, dirname);
}
@@ -143,9 +125,7 @@ bindtextdomain (domainname, dirname)
DLL_EXPORTED
char *
-bind_textdomain_codeset (domainname, codeset)
- const char *domainname;
- const char *codeset;
+bind_textdomain_codeset (const char *domainname, const char *codeset)
{
return libintl_bind_textdomain_codeset (domainname, codeset);
}
diff --git a/intl/l10nflist.c b/intl/l10nflist.c
index ec8713f8e..eb995aafa 100644
--- a/intl/l10nflist.c
+++ b/intl/l10nflist.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
This program is free software; you can redistribute it and/or modify it
@@ -58,7 +58,7 @@
# endif
#else
# ifndef HAVE_STPCPY
-static char *stpcpy PARAMS ((char *dest, const char *src));
+static char *stpcpy (char *dest, const char *src);
# endif
#endif
@@ -84,12 +84,8 @@ static char *stpcpy PARAMS ((char *dest, const char *src));
#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
/* Returns the number of strings in ARGZ. */
-static size_t argz_count__ PARAMS ((const char *argz, size_t len));
-
static size_t
-argz_count__ (argz, len)
- const char *argz;
- size_t len;
+argz_count__ (const char *argz, size_t len)
{
size_t count = 0;
while (len > 0)
@@ -112,13 +108,8 @@ argz_count__ (argz, len)
#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
except the last into the character SEP. */
-static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));
-
static void
-argz_stringify__ (argz, len, sep)
- char *argz;
- size_t len;
- int sep;
+argz_stringify__ (char *argz, size_t len, int sep)
{
while (len > 0)
{
@@ -139,14 +130,8 @@ argz_stringify__ (argz, len, sep)
#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
-static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
- const char *entry));
-
static char *
-argz_next__ (argz, argz_len, entry)
- char *argz;
- size_t argz_len;
- const char *entry;
+argz_next__ (char *argz, size_t argz_len, const char *entry)
{
if (entry)
{
@@ -167,11 +152,8 @@ argz_next__ (argz, argz_len, entry)
/* Return number of bits set in X. */
-static int pop PARAMS ((int x));
-
static inline int
-pop (x)
- int x;
+pop (int x)
{
/* We assume that no more than 16 bits are used. */
x = ((x & ~0x5555) >> 1) + (x & 0x5555);
@@ -184,23 +166,13 @@ pop (x)
struct loaded_l10nfile *
-_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
- territory, codeset, normalized_codeset, modifier, special,
- sponsor, revision, filename, do_allocate)
- struct loaded_l10nfile **l10nfile_list;
- const char *dirlist;
- size_t dirlist_len;
- int mask;
- const char *language;
- const char *territory;
- const char *codeset;
- const char *normalized_codeset;
- const char *modifier;
- const char *special;
- const char *sponsor;
- const char *revision;
- const char *filename;
- int do_allocate;
+_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
+ const char *dirlist, size_t dirlist_len,
+ int mask, const char *language, const char *territory,
+ const char *codeset, const char *normalized_codeset,
+ const char *modifier, const char *special,
+ const char *sponsor, const char *revision,
+ const char *filename, int do_allocate)
{
char *abs_filename;
struct loaded_l10nfile **lastp;
@@ -393,9 +365,7 @@ _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
names. The return value is dynamically allocated and has to be
freed by the caller. */
const char *
-_nl_normalize_codeset (codeset, name_len)
- const char *codeset;
- size_t name_len;
+_nl_normalize_codeset (const char *codeset, size_t name_len)
{
int len = 0;
int only_digit = 1;
@@ -442,9 +412,7 @@ _nl_normalize_codeset (codeset, name_len)
to be defined. */
#if !_LIBC && !HAVE_STPCPY
static char *
-stpcpy (dest, src)
- char *dest;
- const char *src;
+stpcpy (char *dest, const char *src)
{
while ((*dest++ = *src++) != '\0')
/* Do nothing. */ ;
diff --git a/intl/libgnuintl.h.in b/intl/libgnuintl.h.in
index f596cfcb2..3be7eb990 100644
--- a/intl/libgnuintl.h.in
+++ b/intl/libgnuintl.h.in
@@ -47,16 +47,6 @@
# undef gettext
#endif
-/* Use _INTL_PARAMS, not PARAMS, in order to avoid clashes with identifiers
- used by programs. Similarly, test __PROTOTYPES, not PROTOTYPES. */
-#ifndef _INTL_PARAMS
-# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
-# define _INTL_PARAMS(args) args
-# else
-# define _INTL_PARAMS(args) ()
-# endif
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -93,7 +83,7 @@ extern "C" {
If he doesn't, we choose the method. A third possible method is
_INTL_REDIRECT_ASM, supported only by GCC. */
#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
-# if __GNUC__ >= 2 && !defined __APPLE_CC__ && (defined __STDC__ || defined __cplusplus)
+# if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
# define _INTL_REDIRECT_ASM
# else
# ifdef __cplusplus
@@ -125,7 +115,7 @@ static inline char *gettext (const char *__msgid)
#ifdef _INTL_REDIRECT_MACROS
# define gettext libintl_gettext
#endif
-extern char *gettext _INTL_PARAMS ((const char *__msgid))
+extern char *gettext (const char *__msgid)
_INTL_ASM (libintl_gettext);
#endif
@@ -141,8 +131,7 @@ static inline char *dgettext (const char *__domainname, const char *__msgid)
#ifdef _INTL_REDIRECT_MACROS
# define dgettext libintl_dgettext
#endif
-extern char *dgettext _INTL_PARAMS ((const char *__domainname,
- const char *__msgid))
+extern char *dgettext (const char *__domainname, const char *__msgid)
_INTL_ASM (libintl_dgettext);
#endif
@@ -160,9 +149,8 @@ static inline char *dcgettext (const char *__domainname, const char *__msgid,
#ifdef _INTL_REDIRECT_MACROS
# define dcgettext libintl_dcgettext
#endif
-extern char *dcgettext _INTL_PARAMS ((const char *__domainname,
- const char *__msgid,
- int __category))
+extern char *dcgettext (const char *__domainname, const char *__msgid,
+ int __category)
_INTL_ASM (libintl_dcgettext);
#endif
@@ -181,9 +169,8 @@ static inline char *ngettext (const char *__msgid1, const char *__msgid2,
#ifdef _INTL_REDIRECT_MACROS
# define ngettext libintl_ngettext
#endif
-extern char *ngettext _INTL_PARAMS ((const char *__msgid1,
- const char *__msgid2,
- unsigned long int __n))
+extern char *ngettext (const char *__msgid1, const char *__msgid2,
+ unsigned long int __n)
_INTL_ASM (libintl_ngettext);
#endif
@@ -201,10 +188,9 @@ static inline char *dngettext (const char *__domainname, const char *__msgid1,
#ifdef _INTL_REDIRECT_MACROS
# define dngettext libintl_dngettext
#endif
-extern char *dngettext _INTL_PARAMS ((const char *__domainname,
- const char *__msgid1,
- const char *__msgid2,
- unsigned long int __n))
+extern char *dngettext (const char *__domainname,
+ const char *__msgid1, const char *__msgid2,
+ unsigned long int __n)
_INTL_ASM (libintl_dngettext);
#endif
@@ -224,11 +210,9 @@ static inline char *dcngettext (const char *__domainname,
#ifdef _INTL_REDIRECT_MACROS
# define dcngettext libintl_dcngettext
#endif
-extern char *dcngettext _INTL_PARAMS ((const char *__domainname,
- const char *__msgid1,
- const char *__msgid2,
- unsigned long int __n,
- int __category))
+extern char *dcngettext (const char *__domainname,
+ const char *__msgid1, const char *__msgid2,
+ unsigned long int __n, int __category)
_INTL_ASM (libintl_dcngettext);
#endif
@@ -246,7 +230,7 @@ static inline char *textdomain (const char *__domainname)
#ifdef _INTL_REDIRECT_MACROS
# define textdomain libintl_textdomain
#endif
-extern char *textdomain _INTL_PARAMS ((const char *__domainname))
+extern char *textdomain (const char *__domainname)
_INTL_ASM (libintl_textdomain);
#endif
@@ -264,8 +248,7 @@ static inline char *bindtextdomain (const char *__domainname,
#ifdef _INTL_REDIRECT_MACROS
# define bindtextdomain libintl_bindtextdomain
#endif
-extern char *bindtextdomain _INTL_PARAMS ((const char *__domainname,
- const char *__dirname))
+extern char *bindtextdomain (const char *__domainname, const char *__dirname)
_INTL_ASM (libintl_bindtextdomain);
#endif
@@ -283,12 +266,103 @@ static inline char *bind_textdomain_codeset (const char *__domainname,
#ifdef _INTL_REDIRECT_MACROS
# define bind_textdomain_codeset libintl_bind_textdomain_codeset
#endif
-extern char *bind_textdomain_codeset _INTL_PARAMS ((const char *__domainname,
- const char *__codeset))
+extern char *bind_textdomain_codeset (const char *__domainname,
+ const char *__codeset)
_INTL_ASM (libintl_bind_textdomain_codeset);
#endif
+/* Support for format strings with positions in *printf(), following the
+ POSIX/XSI specification.
+ Note: These replacements for the *printf() functions are visible only
+ in source files that #include <libintl.h> or #include "gettext.h".
+ Packages that use *printf() in source files that don't refer to _()
+ or gettext() but for which the format string could be the return value
+ of _() or gettext() need to add this #include. Oh well. */
+
+#if !@HAVE_POSIX_PRINTF@
+
+#include <stdio.h>
+#include <stddef.h>
+
+/* Get va_list. */
+#if __STDC__ || defined __cplusplus || defined _MSC_VER
+# include <stdarg.h>
+#else
+# include <varargs.h>
+#endif
+
+#undef fprintf
+#define fprintf libintl_fprintf
+extern int fprintf (FILE *, const char *, ...);
+#undef vfprintf
+#define vfprintf libintl_vfprintf
+extern int vfprintf (FILE *, const char *, va_list);
+
+#undef printf
+#define printf libintl_printf
+extern int printf (const char *, ...);
+#undef vprintf
+#define vprintf libintl_vprintf
+extern int vprintf (const char *, va_list);
+
+#undef sprintf
+#define sprintf libintl_sprintf
+extern int sprintf (char *, const char *, ...);
+#undef vsprintf
+#define vsprintf libintl_vsprintf
+extern int vsprintf (char *, const char *, va_list);
+
+#if @HAVE_SNPRINTF@
+
+#undef snprintf
+#define snprintf libintl_snprintf
+extern int snprintf (char *, size_t, const char *, ...);
+#undef vsnprintf
+#define vsnprintf libintl_vsnprintf
+extern int vsnprintf (char *, size_t, const char *, va_list);
+
+#endif
+
+#if @HAVE_ASPRINTF@
+
+#undef asprintf
+#define asprintf libintl_asprintf
+extern int asprintf (char **, const char *, ...);
+#undef vasprintf
+#define vasprintf libintl_vasprintf
+extern int vasprintf (char **, const char *, va_list);
+
+#endif
+
+#if @HAVE_WPRINTF@
+
+#undef fwprintf
+#define fwprintf libintl_fwprintf
+extern int fwprintf (FILE *, const wchar_t *, ...);
+#undef vfwprintf
+#define vfwprintf libintl_vfwprintf
+extern int vfwprintf (FILE *, const wchar_t *, va_list);
+
+#undef wprintf
+#define wprintf libintl_wprintf
+extern int wprintf (const wchar_t *, ...);
+#undef vwprintf
+#define vwprintf libintl_vwprintf
+extern int vwprintf (const wchar_t *, va_list);
+
+#undef swprintf
+#define swprintf libintl_swprintf
+extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
+#undef vswprintf
+#define vswprintf libintl_vswprintf
+extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
+
+#endif
+
+#endif
+
+
/* Support for relocatable packages. */
/* Sets the original and the current installation prefix of the package.
@@ -298,8 +372,8 @@ extern char *bind_textdomain_codeset _INTL_PARAMS ((const char *__domainname,
instead of "/"). */
#define libintl_set_relocation_prefix libintl_set_relocation_prefix
extern void
- libintl_set_relocation_prefix _INTL_PARAMS ((const char *orig_prefix,
- const char *curr_prefix));
+ libintl_set_relocation_prefix (const char *orig_prefix,
+ const char *curr_prefix);
#ifdef __cplusplus
diff --git a/intl/loadinfo.h b/intl/loadinfo.h
index 1d3ba6162..65e5ebd1f 100644
--- a/intl/loadinfo.h
+++ b/intl/loadinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-1999, 2000-2002 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1999, 2000-2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -32,14 +32,6 @@
in gettextP.h.
*/
-#ifndef PARAMS
-# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
-# define PARAMS(args) args
-# else
-# define PARAMS(args) ()
-# endif
-#endif
-
#ifndef internal_function
# define internal_function
#endif
@@ -89,8 +81,8 @@ struct loaded_l10nfile
names. Normalization allows the user to use any of the common
names. The return value is dynamically allocated and has to be
freed by the caller. */
-extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
- size_t name_len));
+extern const char *_nl_normalize_codeset (const char *codeset,
+ size_t name_len);
/* Lookup a locale dependent file.
*L10NFILE_LIST denotes a pool of lookup results of locale dependent
@@ -107,19 +99,18 @@ extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
furthermore its ->successor[] field contains a list of other lookup
results from which this lookup result inherits. */
extern struct loaded_l10nfile *
-_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
- const char *dirlist, size_t dirlist_len, int mask,
- const char *language, const char *territory,
- const char *codeset,
- const char *normalized_codeset,
- const char *modifier, const char *special,
- const char *sponsor, const char *revision,
- const char *filename, int do_allocate));
+_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
+ const char *dirlist, size_t dirlist_len, int mask,
+ const char *language, const char *territory,
+ const char *codeset, const char *normalized_codeset,
+ const char *modifier, const char *special,
+ const char *sponsor, const char *revision,
+ const char *filename, int do_allocate);
/* Lookup the real locale name for a locale alias NAME, or NULL if
NAME is not a locale alias (but possibly a real locale name).
The return value is statically allocated and must not be freed. */
-extern const char *_nl_expand_alias PARAMS ((const char *name));
+extern const char *_nl_expand_alias (const char *name);
/* Split a locale name NAME into its pieces: language, modifier,
territory, codeset, special, sponsor, revision.
@@ -139,18 +130,16 @@ extern const char *_nl_expand_alias PARAMS ((const char *name));
CEN_SPONSOR for *SPONSOR,
CEN_REVISION for *REVISION.
*/
-extern int _nl_explode_name PARAMS ((char *name, const char **language,
- const char **modifier,
- const char **territory,
- const char **codeset,
- const char **normalized_codeset,
- const char **special,
- const char **sponsor,
- const char **revision));
+extern int _nl_explode_name (char *name, const char **language,
+ const char **modifier, const char **territory,
+ const char **codeset,
+ const char **normalized_codeset,
+ const char **special, const char **sponsor,
+ const char **revision);
/* Split a locale name NAME into a leading language part and all the
rest. Return a pointer to the first character after the language,
i.e. to the first byte of the rest. */
-extern char *_nl_find_language PARAMS ((const char *name));
+extern char *_nl_find_language (const char *name);
#endif /* loadinfo.h */
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
index 8509bd345..99c51b4c5 100644
--- a/intl/loadmsgcat.c
+++ b/intl/loadmsgcat.c
@@ -1,5 +1,5 @@
/* Load needed message catalogs.
- Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
+ Copyright (C) 1995-1999, 2000-2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -491,11 +491,6 @@ char *alloca ();
#endif
-/* Prototypes for local functions. Needed to ensure compiler checking of
- function argument counts despite of K&R C function definition syntax. */
-static const char *get_sysdep_segment_value PARAMS ((const char *name));
-
-
/* We need a sign, whether a new catalog was loaded, which can be associated
with all translations. This is important if the translations are
cached by one of GCC's features. */
@@ -504,8 +499,7 @@ int _nl_msg_cat_cntr;
/* Expand a system dependent string segment. Return NULL if unsupported. */
static const char *
-get_sysdep_segment_value (name)
- const char *name;
+get_sysdep_segment_value (const char *name)
{
/* Test for an ISO C 99 section 7.8.1 format string directive.
Syntax:
@@ -754,6 +748,18 @@ get_sysdep_segment_value (name)
}
}
}
+ /* Test for a glibc specific printf() format directive flag. */
+ if (name[0] == 'I' && name[1] == '\0')
+ {
+#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+ /* The 'I' flag, in numeric format directives, replaces ASCII digits
+ with the 'outdigits' defined in the LC_CTYPE locale facet. This is
+ used for Farsi (Persian) and maybe Arabic. */
+ return "I";
+#else
+ return "";
+#endif
+ }
/* Other system dependent strings are not valid. */
return NULL;
}
@@ -762,10 +768,9 @@ get_sysdep_segment_value (name)
Return the header entry. */
const char *
internal_function
-_nl_init_domain_conv (domain_file, domain, domainbinding)
- struct loaded_l10nfile *domain_file;
- struct loaded_domain *domain;
- struct binding *domainbinding;
+_nl_init_domain_conv (struct loaded_l10nfile *domain_file,
+ struct loaded_domain *domain,
+ struct binding *domainbinding)
{
/* Find out about the character set the file is encoded with.
This can be found (in textual form) in the entry "". If this
@@ -829,7 +834,7 @@ _nl_init_domain_conv (domain_file, domain, domainbinding)
outcharset = _NL_CURRENT (LC_CTYPE, CODESET);
# else
# if HAVE_ICONV
- extern const char *locale_charset PARAMS ((void));
+ extern const char *locale_charset (void);
outcharset = locale_charset ();
# endif
# endif
@@ -881,8 +886,7 @@ _nl_init_domain_conv (domain_file, domain, domainbinding)
/* Frees the codeset dependent parts of an opened message catalog. */
void
internal_function
-_nl_free_domain_conv (domain)
- struct loaded_domain *domain;
+_nl_free_domain_conv (struct loaded_domain *domain)
{
if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1)
free (domain->conv_tab);
@@ -902,9 +906,8 @@ _nl_free_domain_conv (domain)
message catalog do nothing. */
void
internal_function
-_nl_load_domain (domain_file, domainbinding)
- struct loaded_l10nfile *domain_file;
- struct binding *domainbinding;
+_nl_load_domain (struct loaded_l10nfile *domain_file,
+ struct binding *domainbinding)
{
int fd;
size_t size;
@@ -1028,10 +1031,11 @@ _nl_load_domain (domain_file, domainbinding)
/* Fill in the information about the available tables. */
revision = W (domain->must_swap, data->revision);
- /* We support only the major revision 0. */
+ /* We support only the major revisions 0 and 1. */
switch (revision >> 16)
{
case 0:
+ case 1:
domain->nstrings = W (domain->must_swap, data->nstrings);
domain->orig_tab = (const struct string_desc *)
((char *) data + W (domain->must_swap, data->orig_tab_offset));
@@ -1071,12 +1075,13 @@ _nl_load_domain (domain_file, domainbinding)
const char **sysdep_segment_values;
const nls_uint32 *orig_sysdep_tab;
const nls_uint32 *trans_sysdep_tab;
+ nls_uint32 n_inmem_sysdep_strings;
size_t memneed;
char *mem;
struct sysdep_string_desc *inmem_orig_sysdep_tab;
struct sysdep_string_desc *inmem_trans_sysdep_tab;
nls_uint32 *inmem_hash_tab;
- unsigned int i;
+ unsigned int i, j;
/* Get the values of the system dependent segments. */
n_sysdep_segments =
@@ -1111,153 +1116,247 @@ _nl_load_domain (domain_file, domainbinding)
+ W (domain->must_swap, data->trans_sysdep_tab_offset));
/* Compute the amount of additional memory needed for the
- system dependent strings and the augmented hash table. */
- memneed = 2 * n_sysdep_strings
- * sizeof (struct sysdep_string_desc)
- + domain->hash_size * sizeof (nls_uint32);
- for (i = 0; i < 2 * n_sysdep_strings; i++)
+ system dependent strings and the augmented hash table.
+ At the same time, also drop string pairs which refer to
+ an undefined system dependent segment. */
+ n_inmem_sysdep_strings = 0;
+ memneed = domain->hash_size * sizeof (nls_uint32);
+ for (i = 0; i < n_sysdep_strings; i++)
{
- const struct sysdep_string *sysdep_string =
- (const struct sysdep_string *)
- ((char *) data
- + W (domain->must_swap,
- i < n_sysdep_strings
- ? orig_sysdep_tab[i]
- : trans_sysdep_tab[i - n_sysdep_strings]));
- size_t need = 0;
- const struct segment_pair *p = sysdep_string->segments;
-
- if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END)
- for (p = sysdep_string->segments;; p++)
- {
- nls_uint32 sysdepref;
-
- need += W (domain->must_swap, p->segsize);
-
- sysdepref = W (domain->must_swap, p->sysdepref);
- if (sysdepref == SEGMENTS_END)
- break;
-
- if (sysdepref >= n_sysdep_segments)
+ int valid = 1;
+ size_t needs[2];
+
+ for (j = 0; j < 2; j++)
+ {
+ const struct sysdep_string *sysdep_string =
+ (const struct sysdep_string *)
+ ((char *) data
+ + W (domain->must_swap,
+ j == 0
+ ? orig_sysdep_tab[i]
+ : trans_sysdep_tab[i]));
+ size_t need = 0;
+ const struct segment_pair *p = sysdep_string->segments;
+
+ if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END)
+ for (p = sysdep_string->segments;; p++)
{
- /* Invalid. */
- freea (sysdep_segment_values);
- goto invalid;
- }
+ nls_uint32 sysdepref;
- need += strlen (sysdep_segment_values[sysdepref]);
- }
+ need += W (domain->must_swap, p->segsize);
- memneed += need;
- }
+ sysdepref = W (domain->must_swap, p->sysdepref);
+ if (sysdepref == SEGMENTS_END)
+ break;
- /* Allocate additional memory. */
- mem = (char *) malloc (memneed);
- if (mem == NULL)
- goto invalid;
-
- domain->malloced = mem;
- inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem;
- mem += n_sysdep_strings * sizeof (struct sysdep_string_desc);
- inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem;
- mem += n_sysdep_strings * sizeof (struct sysdep_string_desc);
- inmem_hash_tab = (nls_uint32 *) mem;
- mem += domain->hash_size * sizeof (nls_uint32);
-
- /* Compute the system dependent strings. */
- for (i = 0; i < 2 * n_sysdep_strings; i++)
- {
- const struct sysdep_string *sysdep_string =
- (const struct sysdep_string *)
- ((char *) data
- + W (domain->must_swap,
- i < n_sysdep_strings
- ? orig_sysdep_tab[i]
- : trans_sysdep_tab[i - n_sysdep_strings]));
- const char *static_segments =
- (char *) data
- + W (domain->must_swap, sysdep_string->offset);
- const struct segment_pair *p = sysdep_string->segments;
+ if (sysdepref >= n_sysdep_segments)
+ {
+ /* Invalid. */
+ freea (sysdep_segment_values);
+ goto invalid;
+ }
+
+ if (sysdep_segment_values[sysdepref] == NULL)
+ {
+ /* This particular string pair is invalid. */
+ valid = 0;
+ break;
+ }
+
+ need += strlen (sysdep_segment_values[sysdepref]);
+ }
- /* Concatenate the segments, and fill
- inmem_orig_sysdep_tab[i] (for i < n_sysdep_strings) and
- inmem_trans_sysdep_tab[i-n_sysdep_strings] (for
- i >= n_sysdep_strings). */
+ needs[j] = need;
+ if (!valid)
+ break;
+ }
- if (W (domain->must_swap, p->sysdepref) == SEGMENTS_END)
+ if (valid)
{
- /* Only one static segment. */
- inmem_orig_sysdep_tab[i].length =
- W (domain->must_swap, p->segsize);
- inmem_orig_sysdep_tab[i].pointer = static_segments;
+ n_inmem_sysdep_strings++;
+ memneed += needs[0] + needs[1];
}
- else
+ }
+ memneed += 2 * n_inmem_sysdep_strings
+ * sizeof (struct sysdep_string_desc);
+
+ if (n_inmem_sysdep_strings > 0)
+ {
+ unsigned int k;
+
+ /* Allocate additional memory. */
+ mem = (char *) malloc (memneed);
+ if (mem == NULL)
+ goto invalid;
+
+ domain->malloced = mem;
+ inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem;
+ mem += n_inmem_sysdep_strings
+ * sizeof (struct sysdep_string_desc);
+ inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem;
+ mem += n_inmem_sysdep_strings
+ * sizeof (struct sysdep_string_desc);
+ inmem_hash_tab = (nls_uint32 *) mem;
+ mem += domain->hash_size * sizeof (nls_uint32);
+
+ /* Compute the system dependent strings. */
+ k = 0;
+ for (i = 0; i < n_sysdep_strings; i++)
{
- inmem_orig_sysdep_tab[i].pointer = mem;
+ int valid = 1;
- for (p = sysdep_string->segments;; p++)
+ for (j = 0; j < 2; j++)
{
- nls_uint32 segsize =
- W (domain->must_swap, p->segsize);
- nls_uint32 sysdepref =
- W (domain->must_swap, p->sysdepref);
- size_t n;
+ const struct sysdep_string *sysdep_string =
+ (const struct sysdep_string *)
+ ((char *) data
+ + W (domain->must_swap,
+ j == 0
+ ? orig_sysdep_tab[i]
+ : trans_sysdep_tab[i]));
+ const struct segment_pair *p =
+ sysdep_string->segments;
+
+ if (W (domain->must_swap, p->sysdepref)
+ != SEGMENTS_END)
+ for (p = sysdep_string->segments;; p++)
+ {
+ nls_uint32 sysdepref;
+
+ sysdepref =
+ W (domain->must_swap, p->sysdepref);
+ if (sysdepref == SEGMENTS_END)
+ break;
+
+ if (sysdep_segment_values[sysdepref] == NULL)
+ {
+ /* This particular string pair is
+ invalid. */
+ valid = 0;
+ break;
+ }
+ }
+
+ if (!valid)
+ break;
+ }
- if (segsize > 0)
+ if (valid)
+ {
+ for (j = 0; j < 2; j++)
{
- memcpy (mem, static_segments, segsize);
- mem += segsize;
- static_segments += segsize;
+ const struct sysdep_string *sysdep_string =
+ (const struct sysdep_string *)
+ ((char *) data
+ + W (domain->must_swap,
+ j == 0
+ ? orig_sysdep_tab[i]
+ : trans_sysdep_tab[i]));
+ const char *static_segments =
+ (char *) data
+ + W (domain->must_swap, sysdep_string->offset);
+ const struct segment_pair *p =
+ sysdep_string->segments;
+
+ /* Concatenate the segments, and fill
+ inmem_orig_sysdep_tab[k] (for j == 0) and
+ inmem_trans_sysdep_tab[k] (for j == 1). */
+
+ struct sysdep_string_desc *inmem_tab_entry =
+ (j == 0
+ ? inmem_orig_sysdep_tab
+ : inmem_trans_sysdep_tab)
+ + k;
+
+ if (W (domain->must_swap, p->sysdepref)
+ == SEGMENTS_END)
+ {
+ /* Only one static segment. */
+ inmem_tab_entry->length =
+ W (domain->must_swap, p->segsize);
+ inmem_tab_entry->pointer = static_segments;
+ }
+ else
+ {
+ inmem_tab_entry->pointer = mem;
+
+ for (p = sysdep_string->segments;; p++)
+ {
+ nls_uint32 segsize =
+ W (domain->must_swap, p->segsize);
+ nls_uint32 sysdepref =
+ W (domain->must_swap, p->sysdepref);
+ size_t n;
+
+ if (segsize > 0)
+ {
+ memcpy (mem, static_segments, segsize);
+ mem += segsize;
+ static_segments += segsize;
+ }
+
+ if (sysdepref == SEGMENTS_END)
+ break;
+
+ n = strlen (sysdep_segment_values[sysdepref]);
+ memcpy (mem, sysdep_segment_values[sysdepref], n);
+ mem += n;
+ }
+
+ inmem_tab_entry->length =
+ mem - inmem_tab_entry->pointer;
+ }
}
- if (sysdepref == SEGMENTS_END)
- break;
-
- n = strlen (sysdep_segment_values[sysdepref]);
- memcpy (mem, sysdep_segment_values[sysdepref], n);
- mem += n;
+ k++;
}
-
- inmem_orig_sysdep_tab[i].length =
- mem - inmem_orig_sysdep_tab[i].pointer;
}
- }
-
- /* Compute the augmented hash table. */
- for (i = 0; i < domain->hash_size; i++)
- inmem_hash_tab[i] =
- W (domain->must_swap_hash_tab, domain->hash_tab[i]);
- for (i = 0; i < n_sysdep_strings; i++)
- {
- const char *msgid = inmem_orig_sysdep_tab[i].pointer;
- nls_uint32 hash_val = hash_string (msgid);
- nls_uint32 idx = hash_val % domain->hash_size;
- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-
- for (;;)
+ if (k != n_inmem_sysdep_strings)
+ abort ();
+
+ /* Compute the augmented hash table. */
+ for (i = 0; i < domain->hash_size; i++)
+ inmem_hash_tab[i] =
+ W (domain->must_swap_hash_tab, domain->hash_tab[i]);
+ for (i = 0; i < n_inmem_sysdep_strings; i++)
{
- if (inmem_hash_tab[idx] == 0)
+ const char *msgid = inmem_orig_sysdep_tab[i].pointer;
+ nls_uint32 hash_val = hash_string (msgid);
+ nls_uint32 idx = hash_val % domain->hash_size;
+ nls_uint32 incr =
+ 1 + (hash_val % (domain->hash_size - 2));
+
+ for (;;)
{
- /* Hash table entry is empty. Use it. */
- inmem_hash_tab[idx] = 1 + domain->nstrings + i;
- break;
- }
+ if (inmem_hash_tab[idx] == 0)
+ {
+ /* Hash table entry is empty. Use it. */
+ inmem_hash_tab[idx] = 1 + domain->nstrings + i;
+ break;
+ }
- if (idx >= domain->hash_size - incr)
- idx -= domain->hash_size - incr;
- else
- idx += incr;
+ if (idx >= domain->hash_size - incr)
+ idx -= domain->hash_size - incr;
+ else
+ idx += incr;
+ }
}
- }
- freea (sysdep_segment_values);
+ domain->n_sysdep_strings = n_inmem_sysdep_strings;
+ domain->orig_sysdep_tab = inmem_orig_sysdep_tab;
+ domain->trans_sysdep_tab = inmem_trans_sysdep_tab;
- domain->n_sysdep_strings = n_sysdep_strings;
- domain->orig_sysdep_tab = inmem_orig_sysdep_tab;
- domain->trans_sysdep_tab = inmem_trans_sysdep_tab;
+ domain->hash_tab = inmem_hash_tab;
+ domain->must_swap_hash_tab = 0;
+ }
+ else
+ {
+ domain->n_sysdep_strings = 0;
+ domain->orig_sysdep_tab = NULL;
+ domain->trans_sysdep_tab = NULL;
+ }
- domain->hash_tab = inmem_hash_tab;
- domain->must_swap_hash_tab = 0;
+ freea (sysdep_segment_values);
}
else
{
@@ -1299,8 +1398,7 @@ _nl_load_domain (domain_file, domainbinding)
#ifdef _LIBC
void
internal_function
-_nl_unload_domain (domain)
- struct loaded_domain *domain;
+_nl_unload_domain (struct loaded_domain *domain)
{
if (domain->plural != &__gettext_germanic_plural)
__gettext_free_exp (domain->plural);
diff --git a/intl/localcharset.c b/intl/localcharset.c
index d04d05368..4865f1037 100644
--- a/intl/localcharset.c
+++ b/intl/localcharset.c
@@ -86,7 +86,7 @@
# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
#endif
-#ifdef HAVE_GETC_UNLOCKED
+#if HAVE_DECL_GETC_UNLOCKED
# undef getc
# define getc getc_unlocked
#endif
diff --git a/intl/locale.alias b/intl/locale.alias
index bd7b9b31e..bd6bb2562 100644
--- a/intl/locale.alias
+++ b/intl/locale.alias
@@ -1,5 +1,5 @@
# Locale name alias data base.
-# Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
+# Copyright (C) 1996-2001,2003 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU Library General Public License as published
@@ -29,8 +29,8 @@
# Packages using this file:
-bokmal no_NO.ISO-8859-1
-bokmål no_NO.ISO-8859-1
+bokmal nb_NO.ISO-8859-1
+bokmål nb_NO.ISO-8859-1
catalan ca_ES.ISO-8859-1
croatian hr_HR.ISO-8859-2
czech cs_CZ.ISO-8859-2
@@ -61,9 +61,9 @@ korean ko_KR.eucKR
korean.euc ko_KR.eucKR
ko_KR ko_KR.eucKR
lithuanian lt_LT.ISO-8859-13
-nb_NO no_NO.ISO-8859-1
-nb_NO.ISO-8859-1 no_NO.ISO-8859-1
-norwegian no_NO.ISO-8859-1
+no_NO nb_NO.ISO-8859-1
+no_NO.ISO-8859-1 nb_NO.ISO-8859-1
+norwegian nb_NO.ISO-8859-1
nynorsk nn_NO.ISO-8859-1
polish pl_PL.ISO-8859-2
portuguese pt_PT.ISO-8859-1
diff --git a/intl/localealias.c b/intl/localealias.c
index 7c4ce58f2..2eaf8813e 100644
--- a/intl/localealias.c
+++ b/intl/localealias.c
@@ -110,11 +110,11 @@ __libc_lock_define_initialized (static, lock);
# define freea(p) free (p)
#endif
-#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED
+#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED
# undef fgets
# define fgets(buf, len, s) fgets_unlocked (buf, len, s)
#endif
-#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED
+#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED
# undef feof
# define feof(s) feof_unlocked (s)
#endif
@@ -140,16 +140,15 @@ static size_t maxmap;
/* Prototypes for local functions. */
-static size_t read_alias_file PARAMS ((const char *fname, int fname_len))
+static size_t read_alias_file (const char *fname, int fname_len)
internal_function;
-static int extend_alias_table PARAMS ((void));
-static int alias_compare PARAMS ((const struct alias_map *map1,
- const struct alias_map *map2));
+static int extend_alias_table (void);
+static int alias_compare (const struct alias_map *map1,
+ const struct alias_map *map2);
const char *
-_nl_expand_alias (name)
- const char *name;
+_nl_expand_alias (const char *name)
{
static const char *locale_alias_path;
struct alias_map *retval;
@@ -172,8 +171,8 @@ _nl_expand_alias (name)
if (nmap > 0)
retval = (struct alias_map *) bsearch (&item, map, nmap,
sizeof (struct alias_map),
- (int (*) PARAMS ((const void *,
- const void *))
+ (int (*) (const void *,
+ const void *)
) alias_compare);
else
retval = NULL;
@@ -215,9 +214,7 @@ _nl_expand_alias (name)
static size_t
internal_function
-read_alias_file (fname, fname_len)
- const char *fname;
- int fname_len;
+read_alias_file (const char *fname, int fname_len)
{
FILE *fp;
char *full_fname;
@@ -361,7 +358,7 @@ read_alias_file (fname, fname_len)
if (added > 0)
qsort (map, nmap, sizeof (struct alias_map),
- (int (*) PARAMS ((const void *, const void *))) alias_compare);
+ (int (*) (const void *, const void *)) alias_compare);
return added;
}
@@ -387,9 +384,7 @@ extend_alias_table ()
static int
-alias_compare (map1, map2)
- const struct alias_map *map1;
- const struct alias_map *map2;
+alias_compare (const struct alias_map *map1, const struct alias_map *map2)
{
#if defined _LIBC || defined HAVE_STRCASECMP
return strcasecmp (map1->alias, map2->alias);
diff --git a/intl/localename.c b/intl/localename.c
index faacecd50..5662e54ff 100644
--- a/intl/localename.c
+++ b/intl/localename.c
@@ -1,5 +1,5 @@
/* Determine the current selected locale.
- Copyright (C) 1995-1999, 2000-2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-1999, 2000-2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -34,6 +34,124 @@
#ifdef WIN32
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+/* List of language codes, sorted by value:
+ 0x01 LANG_ARABIC
+ 0x02 LANG_BULGARIAN
+ 0x03 LANG_CATALAN
+ 0x04 LANG_CHINESE
+ 0x05 LANG_CZECH
+ 0x06 LANG_DANISH
+ 0x07 LANG_GERMAN
+ 0x08 LANG_GREEK
+ 0x09 LANG_ENGLISH
+ 0x0a LANG_SPANISH
+ 0x0b LANG_FINNISH
+ 0x0c LANG_FRENCH
+ 0x0d LANG_HEBREW
+ 0x0e LANG_HUNGARIAN
+ 0x0f LANG_ICELANDIC
+ 0x10 LANG_ITALIAN
+ 0x11 LANG_JAPANESE
+ 0x12 LANG_KOREAN
+ 0x13 LANG_DUTCH
+ 0x14 LANG_NORWEGIAN
+ 0x15 LANG_POLISH
+ 0x16 LANG_PORTUGUESE
+ 0x17 LANG_RHAETO_ROMANCE
+ 0x18 LANG_ROMANIAN
+ 0x19 LANG_RUSSIAN
+ 0x1a LANG_CROATIAN == LANG_SERBIAN
+ 0x1b LANG_SLOVAK
+ 0x1c LANG_ALBANIAN
+ 0x1d LANG_SWEDISH
+ 0x1e LANG_THAI
+ 0x1f LANG_TURKISH
+ 0x20 LANG_URDU
+ 0x21 LANG_INDONESIAN
+ 0x22 LANG_UKRAINIAN
+ 0x23 LANG_BELARUSIAN
+ 0x24 LANG_SLOVENIAN
+ 0x25 LANG_ESTONIAN
+ 0x26 LANG_LATVIAN
+ 0x27 LANG_LITHUANIAN
+ 0x28 LANG_TAJIK
+ 0x29 LANG_FARSI
+ 0x2a LANG_VIETNAMESE
+ 0x2b LANG_ARMENIAN
+ 0x2c LANG_AZERI
+ 0x2d LANG_BASQUE
+ 0x2e LANG_SORBIAN
+ 0x2f LANG_MACEDONIAN
+ 0x30 LANG_SUTU
+ 0x31 LANG_TSONGA
+ 0x32 LANG_TSWANA
+ 0x33 LANG_VENDA
+ 0x34 LANG_XHOSA
+ 0x35 LANG_ZULU
+ 0x36 LANG_AFRIKAANS
+ 0x37 LANG_GEORGIAN
+ 0x38 LANG_FAEROESE
+ 0x39 LANG_HINDI
+ 0x3a LANG_MALTESE
+ 0x3b LANG_SAAMI
+ 0x3c LANG_GAELIC
+ 0x3d LANG_YIDDISH
+ 0x3e LANG_MALAY
+ 0x3f LANG_KAZAK
+ 0x40 LANG_KYRGYZ
+ 0x41 LANG_SWAHILI
+ 0x42 LANG_TURKMEN
+ 0x43 LANG_UZBEK
+ 0x44 LANG_TATAR
+ 0x45 LANG_BENGALI
+ 0x46 LANG_PUNJABI
+ 0x47 LANG_GUJARATI
+ 0x48 LANG_ORIYA
+ 0x49 LANG_TAMIL
+ 0x4a LANG_TELUGU
+ 0x4b LANG_KANNADA
+ 0x4c LANG_MALAYALAM
+ 0x4d LANG_ASSAMESE
+ 0x4e LANG_MARATHI
+ 0x4f LANG_SANSKRIT
+ 0x50 LANG_MONGOLIAN
+ 0x51 LANG_TIBETAN
+ 0x52 LANG_WELSH
+ 0x53 LANG_CAMBODIAN
+ 0x54 LANG_LAO
+ 0x55 LANG_BURMESE
+ 0x56 LANG_GALICIAN
+ 0x57 LANG_KONKANI
+ 0x58 LANG_MANIPURI
+ 0x59 LANG_SINDHI
+ 0x5a LANG_SYRIAC
+ 0x5b LANG_SINHALESE
+ 0x5c LANG_CHEROKEE
+ 0x5d LANG_INUKTITUT
+ 0x5e LANG_AMHARIC
+ 0x5f LANG_TAMAZIGHT
+ 0x60 LANG_KASHMIRI
+ 0x61 LANG_NEPALI
+ 0x62 LANG_FRISIAN
+ 0x63 LANG_PASHTO
+ 0x64 LANG_TAGALOG
+ 0x65 LANG_DIVEHI
+ 0x66 LANG_EDO
+ 0x67 LANG_FULFULDE
+ 0x68 LANG_HAUSA
+ 0x69 LANG_IBIBIO
+ 0x6a LANG_YORUBA
+ 0x70 LANG_IGBO
+ 0x71 LANG_KANURI
+ 0x72 LANG_OROMO
+ 0x73 LANG_TIGRINYA
+ 0x74 LANG_GUARANI
+ 0x75 LANG_HAWAIIAN
+ 0x76 LANG_LATIN
+ 0x77 LANG_SOMALI
+ 0x78 LANG_YI
+ 0x79 LANG_PAPIAMENTU
+*/
/* Mingw headers don't have latest language and sublanguage codes. */
# ifndef LANG_AFRIKAANS
# define LANG_AFRIKAANS 0x36
@@ -41,6 +159,9 @@
# ifndef LANG_ALBANIAN
# define LANG_ALBANIAN 0x1c
# endif
+# ifndef LANG_AMHARIC
+# define LANG_AMHARIC 0x5e
+# endif
# ifndef LANG_ARABIC
# define LANG_ARABIC 0x01
# endif
@@ -62,12 +183,24 @@
# ifndef LANG_BENGALI
# define LANG_BENGALI 0x45
# endif
+# ifndef LANG_BURMESE
+# define LANG_BURMESE 0x55
+# endif
+# ifndef LANG_CAMBODIAN
+# define LANG_CAMBODIAN 0x53
+# endif
# ifndef LANG_CATALAN
# define LANG_CATALAN 0x03
# endif
+# ifndef LANG_CHEROKEE
+# define LANG_CHEROKEE 0x5c
+# endif
# ifndef LANG_DIVEHI
# define LANG_DIVEHI 0x65
# endif
+# ifndef LANG_EDO
+# define LANG_EDO 0x66
+# endif
# ifndef LANG_ESTONIAN
# define LANG_ESTONIAN 0x25
# endif
@@ -77,27 +210,57 @@
# ifndef LANG_FARSI
# define LANG_FARSI 0x29
# endif
+# ifndef LANG_FRISIAN
+# define LANG_FRISIAN 0x62
+# endif
+# ifndef LANG_FULFULDE
+# define LANG_FULFULDE 0x67
+# endif
+# ifndef LANG_GAELIC
+# define LANG_GAELIC 0x3c
+# endif
# ifndef LANG_GALICIAN
# define LANG_GALICIAN 0x56
# endif
# ifndef LANG_GEORGIAN
# define LANG_GEORGIAN 0x37
# endif
+# ifndef LANG_GUARANI
+# define LANG_GUARANI 0x74
+# endif
# ifndef LANG_GUJARATI
# define LANG_GUJARATI 0x47
# endif
+# ifndef LANG_HAUSA
+# define LANG_HAUSA 0x68
+# endif
+# ifndef LANG_HAWAIIAN
+# define LANG_HAWAIIAN 0x75
+# endif
# ifndef LANG_HEBREW
# define LANG_HEBREW 0x0d
# endif
# ifndef LANG_HINDI
# define LANG_HINDI 0x39
# endif
+# ifndef LANG_IBIBIO
+# define LANG_IBIBIO 0x69
+# endif
+# ifndef LANG_IGBO
+# define LANG_IGBO 0x70
+# endif
# ifndef LANG_INDONESIAN
# define LANG_INDONESIAN 0x21
# endif
+# ifndef LANG_INUKTITUT
+# define LANG_INUKTITUT 0x5d
+# endif
# ifndef LANG_KANNADA
# define LANG_KANNADA 0x4b
# endif
+# ifndef LANG_KANURI
+# define LANG_KANURI 0x71
+# endif
# ifndef LANG_KASHMIRI
# define LANG_KASHMIRI 0x60
# endif
@@ -110,6 +273,12 @@
# ifndef LANG_KYRGYZ
# define LANG_KYRGYZ 0x40
# endif
+# ifndef LANG_LAO
+# define LANG_LAO 0x54
+# endif
+# ifndef LANG_LATIN
+# define LANG_LATIN 0x76
+# endif
# ifndef LANG_LATVIAN
# define LANG_LATVIAN 0x26
# endif
@@ -125,6 +294,9 @@
# ifndef LANG_MALAYALAM
# define LANG_MALAYALAM 0x4c
# endif
+# ifndef LANG_MALTESE
+# define LANG_MALTESE 0x3a
+# endif
# ifndef LANG_MANIPURI
# define LANG_MANIPURI 0x58
# endif
@@ -140,9 +312,24 @@
# ifndef LANG_ORIYA
# define LANG_ORIYA 0x48
# endif
+# ifndef LANG_OROMO
+# define LANG_OROMO 0x72
+# endif
+# ifndef LANG_PAPIAMENTU
+# define LANG_PAPIAMENTU 0x79
+# endif
+# ifndef LANG_PASHTO
+# define LANG_PASHTO 0x63
+# endif
# ifndef LANG_PUNJABI
# define LANG_PUNJABI 0x46
# endif
+# ifndef LANG_RHAETO_ROMANCE
+# define LANG_RHAETO_ROMANCE 0x17
+# endif
+# ifndef LANG_SAAMI
+# define LANG_SAAMI 0x3b
+# endif
# ifndef LANG_SANSKRIT
# define LANG_SANSKRIT 0x4f
# endif
@@ -152,18 +339,36 @@
# ifndef LANG_SINDHI
# define LANG_SINDHI 0x59
# endif
+# ifndef LANG_SINHALESE
+# define LANG_SINHALESE 0x5b
+# endif
# ifndef LANG_SLOVAK
# define LANG_SLOVAK 0x1b
# endif
+# ifndef LANG_SOMALI
+# define LANG_SOMALI 0x77
+# endif
# ifndef LANG_SORBIAN
# define LANG_SORBIAN 0x2e
# endif
+# ifndef LANG_SUTU
+# define LANG_SUTU 0x30
+# endif
# ifndef LANG_SWAHILI
# define LANG_SWAHILI 0x41
# endif
# ifndef LANG_SYRIAC
# define LANG_SYRIAC 0x5a
# endif
+# ifndef LANG_TAGALOG
+# define LANG_TAGALOG 0x64
+# endif
+# ifndef LANG_TAJIK
+# define LANG_TAJIK 0x28
+# endif
+# ifndef LANG_TAMAZIGHT
+# define LANG_TAMAZIGHT 0x5f
+# endif
# ifndef LANG_TAMIL
# define LANG_TAMIL 0x49
# endif
@@ -176,6 +381,21 @@
# ifndef LANG_THAI
# define LANG_THAI 0x1e
# endif
+# ifndef LANG_TIBETAN
+# define LANG_TIBETAN 0x51
+# endif
+# ifndef LANG_TIGRINYA
+# define LANG_TIGRINYA 0x73
+# endif
+# ifndef LANG_TSONGA
+# define LANG_TSONGA 0x31
+# endif
+# ifndef LANG_TSWANA
+# define LANG_TSWANA 0x32
+# endif
+# ifndef LANG_TURKMEN
+# define LANG_TURKMEN 0x42
+# endif
# ifndef LANG_UKRAINIAN
# define LANG_UKRAINIAN 0x22
# endif
@@ -185,9 +405,30 @@
# ifndef LANG_UZBEK
# define LANG_UZBEK 0x43
# endif
+# ifndef LANG_VENDA
+# define LANG_VENDA 0x33
+# endif
# ifndef LANG_VIETNAMESE
# define LANG_VIETNAMESE 0x2a
# endif
+# ifndef LANG_WELSH
+# define LANG_WELSH 0x52
+# endif
+# ifndef LANG_XHOSA
+# define LANG_XHOSA 0x34
+# endif
+# ifndef LANG_YI
+# define LANG_YI 0x78
+# endif
+# ifndef LANG_YIDDISH
+# define LANG_YIDDISH 0x3d
+# endif
+# ifndef LANG_YORUBA
+# define LANG_YORUBA 0x6a
+# endif
+# ifndef LANG_ZULU
+# define LANG_ZULU 0x35
+# endif
# ifndef SUBLANG_ARABIC_SAUDI_ARABIA
# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
# endif
@@ -242,6 +483,12 @@
# ifndef SUBLANG_AZERI_CYRILLIC
# define SUBLANG_AZERI_CYRILLIC 0x02
# endif
+# ifndef SUBLANG_BENGALI_INDIA
+# define SUBLANG_BENGALI_INDIA 0x00
+# endif
+# ifndef SUBLANG_BENGALI_BANGLADESH
+# define SUBLANG_BENGALI_BANGLADESH 0x01
+# endif
# ifndef SUBLANG_CHINESE_MACAU
# define SUBLANG_CHINESE_MACAU 0x05
# endif
@@ -266,12 +513,54 @@
# ifndef SUBLANG_ENGLISH_PHILIPPINES
# define SUBLANG_ENGLISH_PHILIPPINES 0x0d
# endif
+# ifndef SUBLANG_ENGLISH_INDONESIA
+# define SUBLANG_ENGLISH_INDONESIA 0x0e
+# endif
+# ifndef SUBLANG_ENGLISH_HONGKONG
+# define SUBLANG_ENGLISH_HONGKONG 0x0f
+# endif
+# ifndef SUBLANG_ENGLISH_INDIA
+# define SUBLANG_ENGLISH_INDIA 0x10
+# endif
+# ifndef SUBLANG_ENGLISH_MALAYSIA
+# define SUBLANG_ENGLISH_MALAYSIA 0x11
+# endif
+# ifndef SUBLANG_ENGLISH_SINGAPORE
+# define SUBLANG_ENGLISH_SINGAPORE 0x12
+# endif
# ifndef SUBLANG_FRENCH_LUXEMBOURG
# define SUBLANG_FRENCH_LUXEMBOURG 0x05
# endif
# ifndef SUBLANG_FRENCH_MONACO
# define SUBLANG_FRENCH_MONACO 0x06
# endif
+# ifndef SUBLANG_FRENCH_WESTINDIES
+# define SUBLANG_FRENCH_WESTINDIES 0x07
+# endif
+# ifndef SUBLANG_FRENCH_REUNION
+# define SUBLANG_FRENCH_REUNION 0x08
+# endif
+# ifndef SUBLANG_FRENCH_CONGO
+# define SUBLANG_FRENCH_CONGO 0x09
+# endif
+# ifndef SUBLANG_FRENCH_SENEGAL
+# define SUBLANG_FRENCH_SENEGAL 0x0a
+# endif
+# ifndef SUBLANG_FRENCH_CAMEROON
+# define SUBLANG_FRENCH_CAMEROON 0x0b
+# endif
+# ifndef SUBLANG_FRENCH_COTEDIVOIRE
+# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c
+# endif
+# ifndef SUBLANG_FRENCH_MALI
+# define SUBLANG_FRENCH_MALI 0x0d
+# endif
+# ifndef SUBLANG_FRENCH_MOROCCO
+# define SUBLANG_FRENCH_MOROCCO 0x0e
+# endif
+# ifndef SUBLANG_FRENCH_HAITI
+# define SUBLANG_FRENCH_HAITI 0x0f
+# endif
# ifndef SUBLANG_GERMAN_LUXEMBOURG
# define SUBLANG_GERMAN_LUXEMBOURG 0x04
# endif
@@ -290,12 +579,30 @@
# ifndef SUBLANG_NEPALI_INDIA
# define SUBLANG_NEPALI_INDIA 0x02
# endif
+# ifndef SUBLANG_PUNJABI_INDIA
+# define SUBLANG_PUNJABI_INDIA 0x00
+# endif
+# ifndef SUBLANG_PUNJABI_PAKISTAN
+# define SUBLANG_PUNJABI_PAKISTAN 0x01
+# endif
+# ifndef SUBLANG_ROMANIAN_ROMANIA
+# define SUBLANG_ROMANIAN_ROMANIA 0x00
+# endif
+# ifndef SUBLANG_ROMANIAN_MOLDOVA
+# define SUBLANG_ROMANIAN_MOLDOVA 0x01
+# endif
# ifndef SUBLANG_SERBIAN_LATIN
# define SUBLANG_SERBIAN_LATIN 0x02
# endif
# ifndef SUBLANG_SERBIAN_CYRILLIC
# define SUBLANG_SERBIAN_CYRILLIC 0x03
# endif
+# ifndef SUBLANG_SINDHI_INDIA
+# define SUBLANG_SINDHI_INDIA 0x00
+# endif
+# ifndef SUBLANG_SINDHI_PAKISTAN
+# define SUBLANG_SINDHI_PAKISTAN 0x01
+# endif
# ifndef SUBLANG_SPANISH_GUATEMALA
# define SUBLANG_SPANISH_GUATEMALA 0x04
# endif
@@ -350,6 +657,18 @@
# ifndef SUBLANG_SWEDISH_FINLAND
# define SUBLANG_SWEDISH_FINLAND 0x02
# endif
+# ifndef SUBLANG_TAMAZIGHT_ARABIC
+# define SUBLANG_TAMAZIGHT_ARABIC 0x01
+# endif
+# ifndef SUBLANG_TAMAZIGHT_LATIN
+# define SUBLANG_TAMAZIGHT_LATIN 0x02
+# endif
+# ifndef SUBLANG_TIGRINYA_ETHIOPIA
+# define SUBLANG_TIGRINYA_ETHIOPIA 0x00
+# endif
+# ifndef SUBLANG_TIGRINYA_ERITREA
+# define SUBLANG_TIGRINYA_ERITREA 0x01
+# endif
# ifndef SUBLANG_URDU_PAKISTAN
# define SUBLANG_URDU_PAKISTAN 0x01
# endif
@@ -381,9 +700,7 @@
The result must not be freed; it is statically allocated. */
const char *
-_nl_locale_name (category, categoryname)
- int category;
- const char *categoryname;
+_nl_locale_name (int category, const char *categoryname)
{
const char *retval;
@@ -454,7 +771,7 @@ _nl_locale_name (category, categoryname)
{
case LANG_AFRIKAANS: return "af_ZA";
case LANG_ALBANIAN: return "sq_AL";
- case 0x5e: /* AMHARIC */ return "am_ET";
+ case LANG_AMHARIC: return "am_ET";
case LANG_ARABIC:
switch (sub)
{
@@ -489,12 +806,18 @@ _nl_locale_name (category, categoryname)
case LANG_BASQUE:
return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */
case LANG_BELARUSIAN: return "be_BY";
- case LANG_BENGALI: return "bn_IN";
+ case LANG_BENGALI:
+ switch (sub)
+ {
+ case SUBLANG_BENGALI_INDIA: return "bn_IN";
+ case SUBLANG_BENGALI_BANGLADESH: return "bn_BD";
+ }
+ return "bn";
case LANG_BULGARIAN: return "bg_BG";
- case 0x55: /* BURMESE */ return "my_MM";
- case 0x53: /* CAMBODIAN */ return "km_KH";
+ case LANG_BURMESE: return "my_MM";
+ case LANG_CAMBODIAN: return "km_KH";
case LANG_CATALAN: return "ca_ES";
- case 0x5c: /* CHEROKEE */ return "chr_US";
+ case LANG_CHEROKEE: return "chr_US";
case LANG_CHINESE:
switch (sub)
{
@@ -516,13 +839,13 @@ _nl_locale_name (category, categoryname)
switch (sub)
{
case SUBLANG_DEFAULT: return "hr_HR";
- case SUBLANG_SERBIAN_LATIN: return "sr_YU";
- case SUBLANG_SERBIAN_CYRILLIC: return "sr_YU@cyrillic";
+ case SUBLANG_SERBIAN_LATIN: return "sr_CS";
+ case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic";
}
return "hr";
case LANG_CZECH: return "cs_CZ";
case LANG_DANISH: return "da_DK";
- case LANG_DIVEHI: return "div_MV";
+ case LANG_DIVEHI: return "dv_MV";
case LANG_DUTCH:
switch (sub)
{
@@ -530,7 +853,7 @@ _nl_locale_name (category, categoryname)
case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE";
}
return "nl";
- case 0x66: /* EDO */ return "bin_NG";
+ case LANG_EDO: return "bin_NG";
case LANG_ENGLISH:
switch (sub)
{
@@ -551,6 +874,11 @@ _nl_locale_name (category, categoryname)
case SUBLANG_ENGLISH_TRINIDAD: return "en_TT";
case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW";
case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH";
+ case SUBLANG_ENGLISH_INDONESIA: return "en_ID";
+ case SUBLANG_ENGLISH_HONGKONG: return "en_HK";
+ case SUBLANG_ENGLISH_INDIA: return "en_IN";
+ case SUBLANG_ENGLISH_MALAYSIA: return "en_MY";
+ case SUBLANG_ENGLISH_SINGAPORE: return "en_SG";
}
return "en";
case LANG_ESTONIAN: return "et_EE";
@@ -566,11 +894,22 @@ _nl_locale_name (category, categoryname)
case SUBLANG_FRENCH_SWISS: return "fr_CH";
case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU";
case SUBLANG_FRENCH_MONACO: return "fr_MC";
+ case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */
+ case SUBLANG_FRENCH_REUNION: return "fr_RE";
+ case SUBLANG_FRENCH_CONGO: return "fr_CG";
+ case SUBLANG_FRENCH_SENEGAL: return "fr_SN";
+ case SUBLANG_FRENCH_CAMEROON: return "fr_CM";
+ case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI";
+ case SUBLANG_FRENCH_MALI: return "fr_ML";
+ case SUBLANG_FRENCH_MOROCCO: return "fr_MA";
+ case SUBLANG_FRENCH_HAITI: return "fr_HT";
}
return "fr";
- case 0x62: /* FRISIAN */ return "fy_NL";
- case 0x67: /* FULFULDE */ return "ful_NG";
- case 0x3c: /* GAELIC */
+ case LANG_FRISIAN: return "fy_NL";
+ case LANG_FULFULDE:
+ /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */
+ return "ff_NG";
+ case LANG_GAELIC:
switch (sub)
{
case 0x01: /* SCOTTISH */ return "gd_GB";
@@ -590,21 +929,21 @@ _nl_locale_name (category, categoryname)
}
return "de";
case LANG_GREEK: return "el_GR";
- case 0x74: /* GUARANI */ return "gn_PY";
+ case LANG_GUARANI: return "gn_PY";
case LANG_GUJARATI: return "gu_IN";
- case 0x68: /* HAUSA */ return "ha_NG";
- case 0x75: /* HAWAIIAN */
+ case LANG_HAUSA: return "ha_NG";
+ case LANG_HAWAIIAN:
/* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers)
or Hawaii Creole English ("cpe_US", 600000 speakers)? */
return "cpe_US";
case LANG_HEBREW: return "he_IL";
case LANG_HINDI: return "hi_IN";
case LANG_HUNGARIAN: return "hu_HU";
- case 0x69: /* IBIBIO */ return "nic_NG";
+ case LANG_IBIBIO: return "nic_NG";
case LANG_ICELANDIC: return "is_IS";
- case 0x70: /* IGBO */ return "ibo_NG";
+ case LANG_IGBO: return "ig_NG";
case LANG_INDONESIAN: return "id_ID";
- case 0x5d: /* INUKTITUT */ return "iu_CA";
+ case LANG_INUKTITUT: return "iu_CA";
case LANG_ITALIAN:
switch (sub)
{
@@ -614,7 +953,7 @@ _nl_locale_name (category, categoryname)
return "it";
case LANG_JAPANESE: return "ja_JP";
case LANG_KANNADA: return "kn_IN";
- case 0x71: /* KANURI */ return "kau_NG";
+ case LANG_KANURI: return "kr_NG";
case LANG_KASHMIRI:
switch (sub)
{
@@ -628,8 +967,8 @@ _nl_locale_name (category, categoryname)
return "kok_IN";
case LANG_KOREAN: return "ko_KR";
case LANG_KYRGYZ: return "ky_KG";
- case 0x54: /* LAO */ return "lo_LA";
- case 0x76: /* LATIN */ return "la_VA";
+ case LANG_LAO: return "lo_LA";
+ case LANG_LATIN: return "la_VA";
case LANG_LATVIAN: return "lv_LV";
case LANG_LITHUANIAN: return "lt_LT";
case LANG_MACEDONIAN: return "mk_MK";
@@ -641,7 +980,7 @@ _nl_locale_name (category, categoryname)
}
return "ms";
case LANG_MALAYALAM: return "ml_IN";
- case 0x3a: /* MALTESE */ return "mt_MT";
+ case LANG_MALTESE: return "mt_MT";
case LANG_MANIPURI:
/* FIXME: Adjust this when such locales appear on Unix. */
return "mni_IN";
@@ -663,9 +1002,9 @@ _nl_locale_name (category, categoryname)
}
return "no";
case LANG_ORIYA: return "or_IN";
- case 0x72: /* OROMO */ return "om_ET";
- case 0x79: /* PAPIAMENTU */ return "pap_AN";
- case 0x63: /* PASHTO */
+ case LANG_OROMO: return "om_ET";
+ case LANG_PAPIAMENTU: return "pap_AN";
+ case LANG_PASHTO:
return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */
case LANG_POLISH: return "pl_PL";
case LANG_PORTUGUESE:
@@ -677,18 +1016,36 @@ _nl_locale_name (category, categoryname)
case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR";
}
return "pt";
- case LANG_PUNJABI: return "pa_IN";
- case 0x17: /* RHAETO-ROMANCE */ return "rm_CH";
- case LANG_ROMANIAN: return "ro_RO";
+ case LANG_PUNJABI:
+ switch (sub)
+ {
+ case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */
+ case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */
+ }
+ return "pa";
+ case LANG_RHAETO_ROMANCE: return "rm_CH";
+ case LANG_ROMANIAN:
+ switch (sub)
+ {
+ case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO";
+ case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD";
+ }
+ return "ro";
case LANG_RUSSIAN:
- return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA". */
- case 0x3b: /* SAMI */ return "se_NO";
+ return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */
+ case LANG_SAAMI: /* actually Northern Sami */ return "se_NO";
case LANG_SANSKRIT: return "sa_IN";
- case LANG_SINDHI: return "sd";
- case 0x5b: /* SINHALESE */ return "si_LK";
+ case LANG_SINDHI:
+ switch (sub)
+ {
+ case SUBLANG_SINDHI_INDIA: return "sd_IN";
+ case SUBLANG_SINDHI_PAKISTAN: return "sd_PK";
+ }
+ return "sd";
+ case LANG_SINHALESE: return "si_LK";
case LANG_SLOVAK: return "sk_SK";
case LANG_SLOVENIAN: return "sl_SI";
- case 0x77: /* SOMALI */ return "so_SO";
+ case LANG_SOMALI: return "so_SO";
case LANG_SORBIAN:
/* FIXME: Adjust this when such locales appear on Unix. */
return "wen_DE";
@@ -718,7 +1075,7 @@ _nl_locale_name (category, categoryname)
case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR";
}
return "es";
- case 0x30: /* SUTU */ return "bnt_TZ";
+ case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */
case LANG_SWAHILI: return "sw_KE";
case LANG_SWEDISH:
switch (sub)
@@ -728,19 +1085,33 @@ _nl_locale_name (category, categoryname)
}
return "sv";
case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */
- case 0x64: /* TAGALOG */ return "tl_PH";
- case 0x28: /* TAJIK */ return "tg_TJ";
- case 0x5f: /* TAMAZIGHT */ return "ber_MA";
+ case LANG_TAGALOG: return "tl_PH";
+ case LANG_TAJIK: return "tg_TJ";
+ case LANG_TAMAZIGHT:
+ switch (sub)
+ {
+ /* FIXME: Adjust this when Tamazight locales appear on Unix. */
+ case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic";
+ case SUBLANG_TAMAZIGHT_LATIN: return "ber_MA@latin";
+ }
+ return "ber_MA";
case LANG_TAMIL:
return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */
case LANG_TATAR: return "tt_RU";
case LANG_TELUGU: return "te_IN";
case LANG_THAI: return "th_TH";
- case 0x51: /* TIBETAN */ return "bo_CN";
- case 0x73: /* TIGRINYA */ return "ti_ET";
- case 0x31: /* TSONGA */ return "ts_ZA";
+ case LANG_TIBETAN: return "bo_CN";
+ case LANG_TIGRINYA:
+ switch (sub)
+ {
+ case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET";
+ case SUBLANG_TIGRINYA_ERITREA: return "ti_ER";
+ }
+ return "ti";
+ case LANG_TSONGA: return "ts_ZA";
+ case LANG_TSWANA: return "tn_BW";
case LANG_TURKISH: return "tr_TR";
- case 0x42: /* TURKMEN */ return "tk_TM";
+ case LANG_TURKMEN: return "tk_TM";
case LANG_UKRAINIAN: return "uk_UA";
case LANG_URDU:
switch (sub)
@@ -752,19 +1123,18 @@ _nl_locale_name (category, categoryname)
case LANG_UZBEK:
switch (sub)
{
- /* FIXME: Adjust this when Uzbek locales appear on Unix. */
- case SUBLANG_UZBEK_LATIN: return "uz_UZ@latin";
+ case SUBLANG_UZBEK_LATIN: return "uz_UZ";
case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic";
}
return "uz";
- case 0x33: /* VENDA */ return "ven_ZA";
+ case LANG_VENDA: return "ve_ZA";
case LANG_VIETNAMESE: return "vi_VN";
- case 0x52: /* WELSH */ return "cy_GB";
- case 0x34: /* XHOSA */ return "xh_ZA";
- case 0x78: /* YI */ return "sit_CN";
- case 0x3d: /* YIDDISH */ return "yi_IL";
- case 0x6a: /* YORUBA */ return "yo_NG";
- case 0x35: /* ZULU */ return "zu_ZA";
+ case LANG_WELSH: return "cy_GB";
+ case LANG_XHOSA: return "xh_ZA";
+ case LANG_YI: return "sit_CN";
+ case LANG_YIDDISH: return "yi_IL";
+ case LANG_YORUBA: return "yo_NG";
+ case LANG_ZULU: return "zu_ZA";
default: return "C";
}
diff --git a/intl/log.c b/intl/log.c
index 9c84791b9..cb6076e80 100644
--- a/intl/log.c
+++ b/intl/log.c
@@ -28,9 +28,7 @@
/* Print an ASCII string with quotes and escape sequences where needed. */
static void
-print_escaped (stream, str)
- FILE *stream;
- const char *str;
+print_escaped (FILE *stream, const char *str)
{
putc ('"', stream);
for (; *str != '\0'; str++)
@@ -52,12 +50,8 @@ print_escaped (stream, str)
/* Add to the log file an entry denoting a failed translation. */
void
-_nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural)
- const char *logfilename;
- const char *domainname;
- const char *msgid1;
- const char *msgid2;
- int plural;
+_nl_log_untranslated (const char *logfilename, const char *domainname,
+ const char *msgid1, const char *msgid2, int plural)
{
static char *last_logfilename = NULL;
static FILE *last_logfile = NULL;
diff --git a/intl/ngettext.c b/intl/ngettext.c
index 17a27f4aa..e73e00c48 100644
--- a/intl/ngettext.c
+++ b/intl/ngettext.c
@@ -1,5 +1,5 @@
/* Implementation of ngettext(3) function.
- Copyright (C) 1995, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -54,10 +54,7 @@
LC_MESSAGES locale. If not found, returns MSGID itself (the default
text). */
char *
-NGETTEXT (msgid1, msgid2, n)
- const char *msgid1;
- const char *msgid2;
- unsigned long int n;
+NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n)
{
return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);
}
diff --git a/intl/plural-exp.c b/intl/plural-exp.c
index c937c011a..8c04e6426 100644
--- a/intl/plural-exp.c
+++ b/intl/plural-exp.c
@@ -1,5 +1,5 @@
/* Expression parsing for plural form selection.
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
This program is free software; you can redistribute it and/or modify it
@@ -96,10 +96,8 @@ init_germanic_plural ()
void
internal_function
-EXTRACT_PLURAL_EXPRESSION (nullentry, pluralp, npluralsp)
- const char *nullentry;
- struct expression **pluralp;
- unsigned long int *npluralsp;
+EXTRACT_PLURAL_EXPRESSION (const char *nullentry, struct expression **pluralp,
+ unsigned long int *npluralsp)
{
if (nullentry != NULL)
{
diff --git a/intl/plural-exp.h b/intl/plural-exp.h
index 9e5d16583..49e2c5bfc 100644
--- a/intl/plural-exp.h
+++ b/intl/plural-exp.h
@@ -1,5 +1,5 @@
/* Expression parsing and evaluation for plural form selection.
- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
This program is free software; you can redistribute it and/or modify it
@@ -20,14 +20,6 @@
#ifndef _PLURAL_EXP_H
#define _PLURAL_EXP_H
-#ifndef PARAMS
-# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
-# define PARAMS(args) args
-# else
-# define PARAMS(args) ()
-# endif
-#endif
-
#ifndef internal_function
# define internal_function
#endif
@@ -109,18 +101,18 @@ struct parse_args
# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression
#endif
-extern void FREE_EXPRESSION PARAMS ((struct expression *exp))
+extern void FREE_EXPRESSION (struct expression *exp)
internal_function;
-extern int PLURAL_PARSE PARAMS ((void *arg));
+extern int PLURAL_PARSE (void *arg);
extern struct expression GERMANIC_PLURAL attribute_hidden;
-extern void EXTRACT_PLURAL_EXPRESSION PARAMS ((const char *nullentry,
- struct expression **pluralp,
- unsigned long int *npluralsp))
+extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry,
+ struct expression **pluralp,
+ unsigned long int *npluralsp)
internal_function;
#if !defined (_LIBC) && !defined (IN_LIBINTL)
-extern unsigned long int plural_eval PARAMS ((struct expression *pexp,
- unsigned long int n));
+extern unsigned long int plural_eval (struct expression *pexp,
+ unsigned long int n);
#endif
#endif /* _PLURAL_EXP_H */
diff --git a/intl/plural.c b/intl/plural.c
index 3a4fa20ca..72494f9eb 100644
--- a/intl/plural.c
+++ b/intl/plural.c
@@ -19,7 +19,7 @@
#line 1 "plural.y"
/* Expression parsing for plural form selection.
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
This program is free software; you can redistribute it and/or modify it
@@ -75,28 +75,13 @@ typedef union {
#line 55 "plural.y"
/* Prototypes for local functions. */
-static struct expression *new_exp PARAMS ((int nargs, enum operator op,
- struct expression * const *args));
-static inline struct expression *new_exp_0 PARAMS ((enum operator op));
-static inline struct expression *new_exp_1 PARAMS ((enum operator op,
- struct expression *right));
-static struct expression *new_exp_2 PARAMS ((enum operator op,
- struct expression *left,
- struct expression *right));
-static inline struct expression *new_exp_3 PARAMS ((enum operator op,
- struct expression *bexp,
- struct expression *tbranch,
- struct expression *fbranch));
-static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
-static void yyerror PARAMS ((const char *str));
+static int yylex (YYSTYPE *lval, const char **pexp);
+static void yyerror (const char *str);
/* Allocation of expressions. */
static struct expression *
-new_exp (nargs, op, args)
- int nargs;
- enum operator op;
- struct expression * const *args;
+new_exp (int nargs, enum operator op, struct expression * const *args)
{
int i;
struct expression *newp;
@@ -125,16 +110,13 @@ new_exp (nargs, op, args)
}
static inline struct expression *
-new_exp_0 (op)
- enum operator op;
+new_exp_0 (enum operator op)
{
return new_exp (0, op, NULL);
}
static inline struct expression *
-new_exp_1 (op, right)
- enum operator op;
- struct expression *right;
+new_exp_1 (enum operator op, struct expression *right)
{
struct expression *args[1];
@@ -143,10 +125,7 @@ new_exp_1 (op, right)
}
static struct expression *
-new_exp_2 (op, left, right)
- enum operator op;
- struct expression *left;
- struct expression *right;
+new_exp_2 (enum operator op, struct expression *left, struct expression *right)
{
struct expression *args[2];
@@ -156,11 +135,8 @@ new_exp_2 (op, left, right)
}
static inline struct expression *
-new_exp_3 (op, bexp, tbranch, fbranch)
- enum operator op;
- struct expression *bexp;
- struct expression *tbranch;
- struct expression *fbranch;
+new_exp_3 (enum operator op, struct expression *bexp,
+ struct expression *tbranch, struct expression *fbranch)
{
struct expression *args[3];
@@ -236,8 +212,8 @@ static const short yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
- 0, 174, 182, 186, 190, 194, 198, 202, 206, 210,
- 214, 218, 223
+ 0, 150, 158, 162, 166, 170, 174, 178, 182, 186,
+ 190, 194, 199
};
#endif
@@ -1027,7 +1003,7 @@ yyreduce:
switch (yyn) {
case 1:
-#line 175 "plural.y"
+#line 151 "plural.y"
{
if (yyvsp[0].exp == NULL)
YYABORT;
@@ -1035,68 +1011,68 @@ case 1:
}
break;
case 2:
-#line 183 "plural.y"
+#line 159 "plural.y"
{
yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 3:
-#line 187 "plural.y"
+#line 163 "plural.y"
{
yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 4:
-#line 191 "plural.y"
+#line 167 "plural.y"
{
yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 5:
-#line 195 "plural.y"
+#line 171 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 6:
-#line 199 "plural.y"
+#line 175 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 7:
-#line 203 "plural.y"
+#line 179 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 8:
-#line 207 "plural.y"
+#line 183 "plural.y"
{
yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
}
break;
case 9:
-#line 211 "plural.y"
+#line 187 "plural.y"
{
yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
}
break;
case 10:
-#line 215 "plural.y"
+#line 191 "plural.y"
{
yyval.exp = new_exp_0 (var);
}
break;
case 11:
-#line 219 "plural.y"
+#line 195 "plural.y"
{
if ((yyval.exp = new_exp_0 (num)) != NULL)
yyval.exp->val.num = yyvsp[0].num;
}
break;
case 12:
-#line 224 "plural.y"
+#line 200 "plural.y"
{
yyval.exp = yyvsp[-1].exp;
}
@@ -1334,13 +1310,12 @@ yyreturn:
#endif
return yyresult;
}
-#line 229 "plural.y"
+#line 205 "plural.y"
void
internal_function
-FREE_EXPRESSION (exp)
- struct expression *exp;
+FREE_EXPRESSION (struct expression *exp)
{
if (exp == NULL)
return;
@@ -1366,9 +1341,7 @@ FREE_EXPRESSION (exp)
static int
-yylex (lval, pexp)
- YYSTYPE *lval;
- const char **pexp;
+yylex (YYSTYPE *lval, const char **pexp)
{
const char *exp = *pexp;
int result;
@@ -1511,8 +1484,7 @@ yylex (lval, pexp)
static void
-yyerror (str)
- const char *str;
+yyerror (const char *str)
{
/* Do nothing. We don't print error messages here. */
}
diff --git a/intl/plural.y b/intl/plural.y
index 616b7c11a..4d33bd7c7 100644
--- a/intl/plural.y
+++ b/intl/plural.y
@@ -1,6 +1,6 @@
%{
/* Expression parsing for plural form selection.
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
This program is free software; you can redistribute it and/or modify it
@@ -54,28 +54,13 @@
%{
/* Prototypes for local functions. */
-static struct expression *new_exp PARAMS ((int nargs, enum operator op,
- struct expression * const *args));
-static inline struct expression *new_exp_0 PARAMS ((enum operator op));
-static inline struct expression *new_exp_1 PARAMS ((enum operator op,
- struct expression *right));
-static struct expression *new_exp_2 PARAMS ((enum operator op,
- struct expression *left,
- struct expression *right));
-static inline struct expression *new_exp_3 PARAMS ((enum operator op,
- struct expression *bexp,
- struct expression *tbranch,
- struct expression *fbranch));
-static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
-static void yyerror PARAMS ((const char *str));
+static int yylex (YYSTYPE *lval, const char **pexp);
+static void yyerror (const char *str);
/* Allocation of expressions. */
static struct expression *
-new_exp (nargs, op, args)
- int nargs;
- enum operator op;
- struct expression * const *args;
+new_exp (int nargs, enum operator op, struct expression * const *args)
{
int i;
struct expression *newp;
@@ -104,16 +89,13 @@ new_exp (nargs, op, args)
}
static inline struct expression *
-new_exp_0 (op)
- enum operator op;
+new_exp_0 (enum operator op)
{
return new_exp (0, op, NULL);
}
static inline struct expression *
-new_exp_1 (op, right)
- enum operator op;
- struct expression *right;
+new_exp_1 (enum operator op, struct expression *right)
{
struct expression *args[1];
@@ -122,10 +104,7 @@ new_exp_1 (op, right)
}
static struct expression *
-new_exp_2 (op, left, right)
- enum operator op;
- struct expression *left;
- struct expression *right;
+new_exp_2 (enum operator op, struct expression *left, struct expression *right)
{
struct expression *args[2];
@@ -135,11 +114,8 @@ new_exp_2 (op, left, right)
}
static inline struct expression *
-new_exp_3 (op, bexp, tbranch, fbranch)
- enum operator op;
- struct expression *bexp;
- struct expression *tbranch;
- struct expression *fbranch;
+new_exp_3 (enum operator op, struct expression *bexp,
+ struct expression *tbranch, struct expression *fbranch)
{
struct expression *args[3];
@@ -230,8 +206,7 @@ exp: exp '?' exp ':' exp
void
internal_function
-FREE_EXPRESSION (exp)
- struct expression *exp;
+FREE_EXPRESSION (struct expression *exp)
{
if (exp == NULL)
return;
@@ -257,9 +232,7 @@ FREE_EXPRESSION (exp)
static int
-yylex (lval, pexp)
- YYSTYPE *lval;
- const char **pexp;
+yylex (YYSTYPE *lval, const char **pexp)
{
const char *exp = *pexp;
int result;
@@ -402,8 +375,7 @@ yylex (lval, pexp)
static void
-yyerror (str)
- const char *str;
+yyerror (const char *str)
{
/* Do nothing. We don't print error messages here. */
}
diff --git a/intl/relocatable.c b/intl/relocatable.c
index 16f79a528..bf7c70854 100644
--- a/intl/relocatable.c
+++ b/intl/relocatable.c
@@ -42,7 +42,12 @@
#ifdef NO_XMALLOC
# define xmalloc malloc
#else
-# include "xmalloc.h"
+# include "xalloc.h"
+#endif
+
+#if defined _WIN32 || defined __WIN32__
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
#endif
#if DEPENDS_ON_LIBCHARSET
@@ -152,6 +157,8 @@ set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg)
#endif
}
+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
+
/* Convenience function:
Computes the current installation prefix, based on the original
installation prefix, the original installation directory of a particular
@@ -266,6 +273,8 @@ compute_curr_prefix (const char *orig_installprefix,
}
}
+#endif /* !IN_LIBRARY || PIC */
+
#if defined PIC && defined INSTALLDIR
/* Full pathname of shared library, or NULL. */
@@ -304,7 +313,8 @@ DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved)
static void
find_shared_library_fullname ()
{
-#ifdef __linux__
+#if defined __linux__ && __GLIBC__ >= 2
+ /* Linux has /proc/self/maps. glibc 2 has the getline() function. */
FILE *fp;
/* Open the current process' maps file. It describes one VMA per line. */
diff --git a/intl/relocatable.h b/intl/relocatable.h
index d141200a6..48c5b71e2 100644
--- a/intl/relocatable.h
+++ b/intl/relocatable.h
@@ -20,6 +20,11 @@
#ifndef _RELOCATABLE_H
#define _RELOCATABLE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
/* This can be enabled through the configure --enable-relocatable option. */
#if ENABLE_RELOCATABLE
@@ -64,4 +69,9 @@ extern const char * compute_curr_prefix (const char *orig_installprefix,
#endif
+
+#ifdef __cplusplus
+}
+#endif
+
#endif /* _RELOCATABLE_H */
diff --git a/intl/textdomain.c b/intl/textdomain.c
index f259c696d..8745a8435 100644
--- a/intl/textdomain.c
+++ b/intl/textdomain.c
@@ -1,5 +1,5 @@
/* Implementation of the textdomain(3) function.
- Copyright (C) 1995-1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
@@ -77,8 +77,7 @@ __libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
If DOMAINNAME is null, return the current default.
If DOMAINNAME is "", reset to the default of "messages". */
char *
-TEXTDOMAIN (domainname)
- const char *domainname;
+TEXTDOMAIN (const char *domainname)
{
char *new_domain;
char *old_domain;