mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
Preparing a new release. Updated gettext
This commit is contained in:
parent
dd3b12f3b1
commit
335b5e4ac4
74 changed files with 3439 additions and 2094 deletions
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
GNU gettext library from gettext-0.12.1
|
||||
GNU gettext library from gettext-0.14.1
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 @@ */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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. */ ;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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++)
|
||||
{
|
||||
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)
|
||||
{
|
||||
/* Invalid. */
|
||||
freea (sysdep_segment_values);
|
||||
goto invalid;
|
||||
}
|
||||
|
||||
need += strlen (sysdep_segment_values[sysdepref]);
|
||||
}
|
||||
|
||||
memneed += need;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
|
||||
/* 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). */
|
||||
|
||||
if (W (domain->must_swap, p->sysdepref) == SEGMENTS_END)
|
||||
{
|
||||
/* Only one static segment. */
|
||||
inmem_orig_sysdep_tab[i].length =
|
||||
W (domain->must_swap, p->segsize);
|
||||
inmem_orig_sysdep_tab[i].pointer = static_segments;
|
||||
}
|
||||
else
|
||||
{
|
||||
inmem_orig_sysdep_tab[i].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_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]);
|
||||
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 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));
|
||||
int valid = 1;
|
||||
size_t needs[2];
|
||||
|
||||
for (;;)
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
if (inmem_hash_tab[idx] == 0)
|
||||
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++)
|
||||
{
|
||||
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)
|
||||
{
|
||||
/* 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]);
|
||||
}
|
||||
|
||||
needs[j] = need;
|
||||
if (!valid)
|
||||
break;
|
||||
}
|
||||
|
||||
if (valid)
|
||||
{
|
||||
n_inmem_sysdep_strings++;
|
||||
memneed += needs[0] + needs[1];
|
||||
}
|
||||
}
|
||||
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++)
|
||||
{
|
||||
int valid = 1;
|
||||
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
/* Hash table entry is empty. Use it. */
|
||||
inmem_hash_tab[idx] = 1 + domain->nstrings + i;
|
||||
break;
|
||||
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 (idx >= domain->hash_size - incr)
|
||||
idx -= domain->hash_size - incr;
|
||||
else
|
||||
idx += incr;
|
||||
if (valid)
|
||||
{
|
||||
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]));
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
k++;
|
||||
}
|
||||
}
|
||||
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++)
|
||||
{
|
||||
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 (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;
|
||||
}
|
||||
}
|
||||
|
||||
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->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;
|
||||
}
|
||||
|
||||
freea (sysdep_segment_values);
|
||||
|
||||
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
|
||||
{
|
||||
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
||||
|
|
12
intl/log.c
12
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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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. */
|
||||
}
|
||||
|
|
|
@ -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. */
|
||||
}
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue