parent
8fc1fc1d22
commit
d7c6a6729b
33 changed files with 7883 additions and 0 deletions
@ -0,0 +1,4 @@ |
||||
2001-07-24 GNU <bug-gnu-utils@gnu.org> |
||||
|
||||
* Version 0.10.39 released. |
||||
|
@ -0,0 +1,312 @@ |
||||
# Makefile for directory with message catalog handling in GNU NLS Utilities.
|
||||
# Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
PACKAGE = @PACKAGE@
|
||||
VERSION = @VERSION@
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
top_builddir = ..
|
||||
VPATH = @srcdir@
|
||||
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
transform = @program_transform_name@
|
||||
libdir = @libdir@
|
||||
includedir = @includedir@
|
||||
datadir = @datadir@
|
||||
localedir = $(datadir)/locale
|
||||
gettextsrcdir = $(datadir)/gettext/intl
|
||||
aliaspath = $(localedir)
|
||||
subdir = intl
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
|
||||
|
||||
l = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
|
||||
AR = ar
|
||||
CC = @CC@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
RANLIB = @RANLIB@
|
||||
YACC = @INTLBISON@ -y -d
|
||||
YFLAGS = --name-prefix=__gettext
|
||||
|
||||
DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
|
||||
-DLIBDIR=\"$(libdir)\" @DEFS@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CFLAGS = @CFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
|
||||
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
|
||||
|
||||
HEADERS = $(COMHDRS) libgnuintl.h libgettext.h loadinfo.h
|
||||
COMHDRS = gettext.h gettextP.h hash-string.h
|
||||
SOURCES = $(COMSRCS) intl-compat.c
|
||||
COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
|
||||
finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ |
||||
explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y \ |
||||
localcharset.c |
||||
OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \
|
||||
finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ |
||||
explodename.$lo dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \ |
||||
plural.$lo localcharset.$lo |
||||
GETTOBJS = intl-compat.$lo
|
||||
DISTFILES.common = Makefile.in \
|
||||
config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES) |
||||
DISTFILES.generated = plural.c
|
||||
DISTFILES.normal = VERSION
|
||||
DISTFILES.gettext = libintl.glibc
|
||||
DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c
|
||||
|
||||
# Libtool's library version information for libintl.
|
||||
# Before making a gettext release, the gettext maintainer must change this
|
||||
# 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=1
|
||||
LTV_REVISION=1
|
||||
LTV_AGE=0
|
||||
|
||||
.SUFFIXES: |
||||
.SUFFIXES: .c .y .o .lo .sin .sed |
||||
.c.o: |
||||
$(COMPILE) $<
|
||||
.c.lo: |
||||
$(LIBTOOL) --mode=compile $(COMPILE) $<
|
||||
|
||||
.y.c: |
||||
$(YACC) $(YFLAGS) --output $@ $<
|
||||
rm -f $*.h
|
||||
|
||||
.sin.sed: |
||||
sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@
|
||||
mv t-$@ $@
|
||||
|
||||
INCLUDES = -I.. -I. -I$(top_srcdir)/intl
|
||||
|
||||
all: all-@USE_INCLUDED_LIBINTL@ |
||||
all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed |
||||
all-no: all-no-@BUILD_INCLUDED_LIBINTL@ |
||||
all-no-yes: libgnuintl.$la |
||||
all-no-no: |
||||
|
||||
libintl.a libgnuintl.a: $(OBJECTS) |
||||
rm -f $@
|
||||
$(AR) cru $@ $(OBJECTS)
|
||||
$(RANLIB) $@
|
||||
|
||||
libintl.la libgnuintl.la: $(OBJECTS) |
||||
$(LIBTOOL) --mode=link \
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
|
||||
$(OBJECTS) @LIBICONV@ \
|
||||
-version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
|
||||
-rpath $(libdir) \
|
||||
-no-undefined
|
||||
|
||||
libintl.h: libgnuintl.h |
||||
cp $(srcdir)/libgnuintl.h libintl.h
|
||||
|
||||
charset.alias: config.charset |
||||
$(SHELL) $(srcdir)/config.charset '@host@' > t-$@
|
||||
mv t-$@ $@
|
||||
|
||||
check: all |
||||
|
||||
# This installation goal is only used in GNU gettext. Packages which
|
||||
# only use the library should use install instead.
|
||||
|
||||
# We must not install the libintl.h/libintl.a files if we are on a
|
||||
# system which has the GNU gettext() function in its C library or in a
|
||||
# separate library.
|
||||
# If you want to use the one which comes with this version of the
|
||||
# package, you have to use `configure --with-included-gettext'.
|
||||
install: install-exec install-data |
||||
install-exec: all |
||||
if test "$(PACKAGE)" = "gettext" \
|
||||
&& test '@INTLOBJS@' = '$(GETTOBJS)'; then \
|
||||
$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
|
||||
$(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
|
||||
$(LIBTOOL) --mode=install \
|
||||
$(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
if test '@USE_INCLUDED_LIBINTL@' = yes; then \
|
||||
$(mkinstalldirs) $(DESTDIR)$(libdir); \
|
||||
temp=$(DESTDIR)$(libdir)/t-charset.alias; \
|
||||
dest=$(DESTDIR)$(libdir)/charset.alias; \
|
||||
if test -f $(DESTDIR)$(libdir)/charset.alias; then \
|
||||
orig=$(DESTDIR)$(libdir)/charset.alias; \
|
||||
sed -f ref-add.sed $$orig > $$temp; \
|
||||
$(INSTALL_DATA) $$temp $$dest; \
|
||||
rm -f $$temp; \
|
||||
else \
|
||||
if test @GLIBC21@ = no; then \
|
||||
orig=charset.alias; \
|
||||
sed -f ref-add.sed $$orig > $$temp; \
|
||||
$(INSTALL_DATA) $$temp $$dest; \
|
||||
rm -f $$temp; \
|
||||
fi; \
|
||||
fi; \
|
||||
$(mkinstalldirs) $(DESTDIR)$(localedir); \
|
||||
test -f $(DESTDIR)$(localedir)/locale.alias \
|
||||
&& orig=$(DESTDIR)$(localedir)/locale.alias \
|
||||
|| orig=$(srcdir)/locale.alias; \
|
||||
temp=$(DESTDIR)$(localedir)/t-locale.alias; \
|
||||
dest=$(DESTDIR)$(localedir)/locale.alias; \
|
||||
sed -f ref-add.sed $$orig > $$temp; \
|
||||
$(INSTALL_DATA) $$temp $$dest; \
|
||||
rm -f $$temp; \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
install-data: all |
||||
if test "$(PACKAGE)" = "gettext"; then \
|
||||
$(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
|
||||
$(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
|
||||
$(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
|
||||
dists="$(DISTFILES.common)"; \
|
||||
for file in $$dists; do \
|
||||
$(INSTALL_DATA) $(srcdir)/$$file \
|
||||
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||
done; \
|
||||
chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
|
||||
dists="$(DISTFILES.generated)"; \
|
||||
for file in $$dists; do \
|
||||
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
|
||||
$(INSTALL_DATA) $$dir/$$file \
|
||||
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||
done; \
|
||||
dists="$(DISTFILES.obsolete)"; \
|
||||
for file in $$dists; do \
|
||||
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||
done; \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
|
||||
# Define this as empty until I found a useful application.
|
||||
installcheck: |
||||
|
||||
uninstall: |
||||
if test "$(PACKAGE)" = "gettext" \
|
||||
&& test '@INTLOBJS@' = '$(GETTOBJS)'; then \
|
||||
rm -f $(DESTDIR)$(includedir)/libintl.h; \
|
||||
$(LIBTOOL) --mode=uninstall \
|
||||
rm -f $(DESTDIR)$(libdir)/libintl.$la; \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
if test '@USE_INCLUDED_LIBINTL@' = yes; then \
|
||||
if test -f $(DESTDIR)$(libdir)/charset.alias; then \
|
||||
temp=$(DESTDIR)$(libdir)/t-charset.alias; \
|
||||
dest=$(DESTDIR)$(libdir)/charset.alias; \
|
||||
sed -f ref-del.sed $$dest > $$temp; \
|
||||
if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
|
||||
rm -f $$dest; \
|
||||
else \
|
||||
$(INSTALL_DATA) $$temp $$dest; \
|
||||
fi; \
|
||||
rm -f $$temp; \
|
||||
fi; \
|
||||
if test -f $(DESTDIR)$(localedir)/locale.alias; then \
|
||||
temp=$(DESTDIR)$(localedir)/t-locale.alias; \
|
||||
dest=$(DESTDIR)$(localedir)/locale.alias; \
|
||||
sed -f ref-del.sed $$dest > $$temp; \
|
||||
if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
|
||||
rm -f $$dest; \
|
||||
else \
|
||||
$(INSTALL_DATA) $$temp $$dest; \
|
||||
fi; \
|
||||
rm -f $$temp; \
|
||||
fi; \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
if test "$(PACKAGE)" = "gettext"; then \
|
||||
for file in VERSION ChangeLog $(DISTFILES.common) $(DISTFILES.generated); do \
|
||||
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||
done; \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
|
||||
info dvi: |
||||
|
||||
$(OBJECTS): ../config.h libgnuintl.h |
||||
bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h |
||||
dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h |
||||
|
||||
tags: TAGS |
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) |
||||
here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
|
||||
|
||||
id: ID |
||||
|
||||
ID: $(HEADERS) $(SOURCES) |
||||
here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
|
||||
|
||||
|
||||
mostlyclean: |
||||
rm -f *.a *.la *.o *.lo core core.*
|
||||
rm -f libintl.h charset.alias ref-add.sed ref-del.sed
|
||||
rm -f -r .libs _libs
|
||||
|
||||
clean: mostlyclean |
||||
|
||||
distclean: clean |
||||
rm -f Makefile ID TAGS
|
||||
if test "$(PACKAGE)" = gettext; then \
|
||||
rm -f ChangeLog.inst $(DISTFILES.normal); \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
|
||||
maintainer-clean: distclean |
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
|
||||
# GNU gettext needs not contain the file `VERSION' but contains some
|
||||
# other files which should not be distributed in other packages.
|
||||
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
dist distdir: Makefile |
||||
if test "$(PACKAGE)" = gettext; then \
|
||||
additional="$(DISTFILES.gettext)"; \
|
||||
else \
|
||||
additional="$(DISTFILES.normal)"; \
|
||||
fi; \
|
||||
$(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
|
||||
for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
|
||||
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
|
||||
ln $$dir/$$file $(distdir) 2> /dev/null \
|
||||
|| cp -p $$dir/$$file $(distdir); \
|
||||
done
|
||||
|
||||
Makefile: Makefile.in ../config.status |
||||
cd .. \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT: |
@ -0,0 +1 @@ |
||||
GNU gettext library from gettext-0.10.39 |
@ -0,0 +1,368 @@ |
||||
/* Implementation of the bindtextdomain(3) function
|
||||
Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. |
||||
|
||||
This program is free software; you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation; either version 2, or (at your option) |
||||
any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program; if not, write to the Free Software Foundation, |
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
||||
|
||||
#ifdef HAVE_CONFIG_H |
||||
# include <config.h> |
||||
#endif |
||||
|
||||
#include <stddef.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
|
||||
#ifdef _LIBC |
||||
# include <libintl.h> |
||||
#else |
||||
# include "libgnuintl.h" |
||||
#endif |
||||
#include "gettextP.h" |
||||
|
||||
#ifdef _LIBC |
||||
/* We have to handle multi-threaded applications. */ |
||||
# include <bits/libc-lock.h> |
||||
#else |
||||
/* Provide dummy implementation if this is outside glibc. */ |
||||
# define __libc_rwlock_define(CLASS, NAME) |
||||
# define __libc_rwlock_wrlock(NAME) |
||||
# define __libc_rwlock_unlock(NAME) |
||||
#endif |
||||
|
||||
/* The internal variables in the standalone libintl.a must have different
|
||||
names than the internal variables in GNU libc, otherwise programs |
||||
using libintl.a cannot be linked statically. */ |
||||
#if !defined _LIBC |
||||
# define _nl_default_dirname _nl_default_dirname__ |
||||
# define _nl_domain_bindings _nl_domain_bindings__ |
||||
#endif |
||||
|
||||
/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */ |
||||
#ifndef offsetof |
||||
# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) |
||||
#endif |
||||
|
||||
/* @@ end of prolog @@ */ |
||||
|
||||
/* Contains the default location of the message catalogs. */ |
||||
extern const char _nl_default_dirname[]; |
||||
|
||||
/* List with bindings of specific domains. */ |
||||
extern struct binding *_nl_domain_bindings; |
||||
|
||||
/* Lock variable to protect the global data in the gettext implementation. */ |
||||
__libc_rwlock_define (extern, _nl_state_lock) |
||||
|
||||
|
||||
/* Names for the libintl functions are a problem. They must not clash
|
||||
with existing names and they should follow ANSI C. But this source |
||||
code is also used in GNU C Library where the names have a __ |
||||
prefix. So we have to make a difference here. */ |
||||
#ifdef _LIBC |
||||
# define BINDTEXTDOMAIN __bindtextdomain |
||||
# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset |
||||
# ifndef strdup |
||||
# define strdup(str) __strdup (str) |
||||
# endif |
||||
#else |
||||
# define BINDTEXTDOMAIN bindtextdomain__ |
||||
# define BIND_TEXTDOMAIN_CODESET 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 |
||||
modified, only the current value is returned. |
||||
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; |
||||
{ |
||||
struct binding *binding; |
||||
int modified; |
||||
|
||||
/* Some sanity checks. */ |
||||
if (domainname == NULL || domainname[0] == '\0') |
||||
{ |
||||
if (dirnamep) |
||||
*dirnamep = NULL; |
||||
if (codesetp) |
||||
*codesetp = NULL; |
||||
return; |
||||
} |
||||
|
||||
__libc_rwlock_wrlock (_nl_state_lock); |
||||
|
||||
modified = 0; |
||||
|
||||
for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) |
||||
{ |
||||
int compare = strcmp (domainname, binding->domainname); |
||||
if (compare == 0) |
||||
/* We found it! */ |
||||
break; |
||||
if (compare < 0) |
||||
{ |
||||
/* It is not in the list. */ |
||||
binding = NULL; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if (binding != NULL) |
||||
{ |
||||
if (dirnamep) |
||||
{ |
||||
const char *dirname = *dirnamep; |
||||
|
||||
if (dirname == NULL) |
||||
/* The current binding has be to returned. */ |
||||
*dirnamep = binding->dirname; |
||||
else |
||||
{ |
||||
/* The domain is already bound. If the new value and the old
|
||||
one are equal we simply do nothing. Otherwise replace the |
||||
old binding. */ |
||||
char *result = binding->dirname; |
||||
if (strcmp (dirname, result) != 0) |
||||
{ |
||||
if (strcmp (dirname, _nl_default_dirname) == 0) |
||||
result = (char *) _nl_default_dirname; |
||||
else |
||||
{ |
||||
#if defined _LIBC || defined HAVE_STRDUP |
||||
result = strdup (dirname); |
||||
#else |
||||
size_t len = strlen (dirname) + 1; |
||||
result = (char *) malloc (len); |
||||
if (__builtin_expect (result != NULL, 1)) |
||||
memcpy (result, dirname, len); |
||||
#endif |
||||
} |
||||
|
||||
if (__builtin_expect (result != NULL, 1)) |
||||
{ |
||||
if (binding->dirname != _nl_default_dirname) |
||||
free (binding->dirname); |
||||
|
||||
binding->dirname = result; |
||||
modified = 1; |
||||
} |
||||
} |
||||
*dirnamep = result; |
||||
} |
||||
} |
||||
|
||||
if (codesetp) |
||||
{ |
||||
const char *codeset = *codesetp; |
||||
|
||||
if (codeset == NULL) |
||||
/* The current binding has be to returned. */ |
||||
*codesetp = binding->codeset; |
||||
else |
||||
{ |
||||
/* The domain is already bound. If the new value and the old
|
||||
one are equal we simply do nothing. Otherwise replace the |
||||
old binding. */ |
||||
char *result = binding->codeset; |
||||
if (result == NULL || strcmp (codeset, result) != 0) |
||||
{ |
||||
#if defined _LIBC || defined HAVE_STRDUP |
||||
result = strdup (codeset); |
||||
#else |
||||
size_t len = strlen (codeset) + 1; |
||||
result = (char *) malloc (len); |
||||
if (__builtin_expect (result != NULL, 1)) |
||||
memcpy (result, codeset, len); |
||||
#endif |
||||
|
||||
if (__builtin_expect (result != NULL, 1)) |
||||
{ |
||||
if (binding->codeset != NULL) |
||||
free (binding->codeset); |
||||
|
||||
binding->codeset = result; |
||||
binding->codeset_cntr++; |
||||
modified = 1; |
||||
} |
||||
} |
||||
*codesetp = result; |
||||
} |
||||
} |
||||
} |
||||
else if ((dirnamep == NULL || *dirnamep == NULL) |
||||
&& (codesetp == NULL || *codesetp == NULL)) |
||||
{ |
||||
/* Simply return the default values. */ |
||||
if (dirnamep) |
||||
*dirnamep = _nl_default_dirname; |
||||
if (codesetp) |
||||
*codesetp = NULL; |
||||
} |
||||
else |
||||
{ |
||||
/* We have to create a new binding. */ |
||||
size_t len = strlen (domainname) + 1; |
||||
struct binding *new_binding = |
||||
(struct binding *) malloc (offsetof (struct binding, domainname) + len); |
||||
|
||||
if (__builtin_expect (new_binding == NULL, 0)) |
||||
goto failed; |
||||
|
||||
memcpy (new_binding->domainname, domainname, len); |
||||
|
||||
if (dirnamep) |
||||
{ |
||||
const char *dirname = *dirnamep; |
||||
|
||||
if (dirname == NULL) |
||||
/* The default value. */ |
||||
dirname = _nl_default_dirname; |
||||
else |
||||
{ |
||||
if (strcmp (dirname, _nl_default_dirname) == 0) |
||||
dirname = _nl_default_dirname; |
||||
else |
||||
{ |
||||
char *result; |
||||
#if defined _LIBC || defined HAVE_STRDUP |
||||
result = strdup (dirname); |
||||
if (__builtin_expect (result == NULL, 0)) |
||||
goto failed_dirname; |
||||
#else |
||||
size_t len = strlen (dirname) + 1; |
||||
result = (char *) malloc (len); |
||||
if (__builtin_expect (result == NULL, 0)) |
||||
goto failed_dirname; |
||||
memcpy (result, dirname, len); |
||||
#endif |
||||
dirname = result; |
||||
} |
||||
} |
||||
*dirnamep = dirname; |
||||
new_binding->dirname = (char *) dirname; |
||||
} |
||||
else |
||||
/* The default value. */ |
||||
new_binding->dirname = (char *) _nl_default_dirname; |
||||
|
||||
new_binding->codeset_cntr = 0; |
||||
|
||||
if (codesetp) |
||||
{ |
||||
const char *codeset = *codesetp; |
||||
|
||||
if (codeset != NULL) |
||||
{ |
||||
char *result; |
||||
|
||||
#if defined _LIBC || defined HAVE_STRDUP |
||||
result = strdup (codeset); |
||||
if (__builtin_expect (result == NULL, 0)) |
||||
goto failed_codeset; |
||||
#else |
||||
size_t len = strlen (codeset) + 1; |
||||
result = (char *) malloc (len); |
||||
if (__builtin_expect (result == NULL, 0)) |
||||
goto failed_codeset; |
||||
memcpy (result, codeset, len); |
||||
#endif |
||||
codeset = result; |
||||
new_binding->codeset_cntr++; |
||||
} |
||||
*codesetp = codeset; |
||||
new_binding->codeset = (char *) codeset; |
||||
} |
||||
else |
||||
new_binding->codeset = NULL; |
||||
|
||||
/* Now enqueue it. */ |
||||
if (_nl_domain_bindings == NULL |
||||
|| strcmp (domainname, _nl_domain_bindings->domainname) < 0) |
||||
{ |
||||
new_binding->next = _nl_domain_bindings; |
||||
_nl_domain_bindings = new_binding; |
||||
} |
||||
else |
||||
{ |
||||
binding = _nl_domain_bindings; |
||||
while (binding->next != NULL |
||||
&& strcmp (domainname, binding->next->domainname) > 0) |
||||
binding = binding->next; |
||||
|
||||
new_binding->next = binding->next; |
||||
binding->next = new_binding; |
||||
} |
||||
|
||||
modified = 1; |
||||
|
||||
/* Here we deal with memory allocation failures. */ |
||||
if (0) |
||||
{ |
||||
failed_codeset: |
||||
if (new_binding->dirname != _nl_default_dirname) |
||||
free (new_binding->dirname); |
||||
failed_dirname: |
||||
free (new_binding); |
||||
failed: |
||||
if (dirnamep) |
||||
*dirnamep = NULL; |
||||
if (codesetp) |
||||
*codesetp = NULL; |
||||
} |
||||
} |
||||
|
||||
/* If we modified any binding, we flush the caches. */ |
||||
if (modified) |
||||
++_nl_msg_cat_cntr; |
||||
|
||||
__libc_rwlock_unlock (_nl_state_lock); |
||||
} |
||||
|
||||
/* 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; |
||||
{ |
||||
set_binding_values (domainname, &dirname, NULL); |
||||
return (char *) 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; |
||||
{ |
||||
set_binding_values (domainname, NULL, &codeset); |
||||
return (char *) codeset; |
||||
} |
||||
|
||||
#ifdef _LIBC |
||||
/* Aliases for function names in GNU C Library. */ |
||||
weak_alias (__bindtextdomain, bindtextdomain); |
||||
weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); |
||||
#endif |
@ -0,0 +1,438 @@ |
||||
#! /bin/sh |
||||
# Output a system dependent table of character encoding aliases. |
||||
# |
||||
# Copyright (C) 2000-2001 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 |
||||
# by the Free Software Foundation; either version 2, or (at your option) |
||||
# any later version. |
||||
# |
||||
# This program is distributed in the hope that it will be useful, |
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
||||
# Library General Public License for more details. |
||||
# |
||||
# You should have received a copy of the GNU Library General Public |
||||
# License along with this program; if not, write to the Free Software |
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
||||
# USA. |
||||
# |
||||
# The table consists of lines of the form |
||||
# ALIAS CANONICAL |
||||
# |
||||
# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". |
||||
# ALIAS is compared in a case sensitive way. |
||||
# |
||||
# CANONICAL is the GNU canonical name for this character encoding. |
||||
# It must be an encoding supported by libiconv. Support by GNU libc is |
||||
# also desirable. CANONICAL is case insensitive. Usually an upper case |
||||
# 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 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-15 glibc aix osf solaris freebsd |
||||
# KOI8-R glibc solaris freebsd yes |
||||
# KOI8-U glibc freebsd yes |
||||
# 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 win32 dos |
||||
# CP922 aix |
||||
# CP932 aix win32 dos |
||||
# CP943 aix |
||||
# CP949 osf win32 dos |
||||
# CP950 win32 dos |
||||
# CP1046 aix |
||||
# CP1124 aix |
||||
# CP1129 aix |
||||
# CP1250 win32 |
||||
# CP1251 glibc win32 |
||||
# CP1252 aix win32 |
||||
# CP1253 win32 |
||||
# CP1254 win32 |
||||
# CP1255 win32 |
||||
# CP1256 win32 |
||||
# CP1257 win32 |
||||
# 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 |
||||
# GBK aix osf win32 dos |
||||
# GB18030 glibc |
||||
# SHIFT_JIS hpux osf solaris freebsd yes |
||||
# JOHAB glibc win32 |
||||
# TIS-620 glibc aix hpux osf solaris |
||||
# VISCII glibc yes |
||||
# 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 |
||||
# |
||||
# Note: Names which are not marked as being a MIME name should not be used in |
||||
# Internet protocols for information interchange (mail, news, etc.). |
||||
# |
||||
# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications |
||||
# must understand both names and treat them as equivalent. |
||||
# |
||||
# The first argument passed to this file is the canonical host specification, |
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM |
||||
# or |
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM |
||||
|
||||
host="$1" |
||||
os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` |
||||
echo "# This file contains a table of character encoding aliases," |
||||
echo "# suitable for operating system '${os}'." |
||||
echo "# It was automatically generated from config.charset." |
||||
# List of references, updated during installation: |
||||
echo "# Packages using this file: " |
||||
case "$os" in |
||||
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 |
||||
# GNU canonical names directly. Therefore, the Makefile does not |
||||
# need to install the alias file at all. |
||||
# The following applies only to glibc-2.0.x and older libcs. |
||||
echo "ISO_646.IRV:1983 ASCII" |
||||
;; |
||||
aix*) |
||||
echo "ISO8859-1 ISO-8859-1" |
||||
echo "ISO8859-2 ISO-8859-2" |
||||
echo "ISO8859-5 ISO-8859-5" |
||||
echo "ISO8859-6 ISO-8859-6" |
||||
echo "ISO8859-7 ISO-8859-7" |
||||
echo "ISO8859-8 ISO-8859-8" |
||||
echo "ISO8859-9 ISO-8859-9" |
||||
echo "ISO8859-15 ISO-8859-15" |
||||
echo "IBM-850 CP850" |
||||
echo "IBM-856 CP856" |
||||
echo "IBM-921 ISO-8859-13" |
||||
echo "IBM-922 CP922" |
||||
echo "IBM-932 CP932" |
||||
echo "IBM-943 CP943" |
||||
echo "IBM-1046 CP1046" |
||||
echo "IBM-1124 CP1124" |
||||
echo "IBM-1129 CP1129" |
||||
echo "IBM-1252 CP1252" |
||||
echo "IBM-eucCN GB2312" |
||||
echo "IBM-eucJP EUC-JP" |
||||
echo "IBM-eucKR EUC-KR" |
||||
echo "IBM-eucTW EUC-TW" |
||||
echo "big5 BIG5" |
||||
echo "GBK GBK" |
||||
echo "TIS-620 TIS-620" |
||||
echo "UTF-8 UTF-8" |
||||
;; |
||||
hpux*) |
||||
echo "iso88591 ISO-8859-1" |
||||
echo "iso88592 ISO-8859-2" |
||||
echo "iso88595 ISO-8859-5" |
||||
echo "iso88596 ISO-8859-6" |
||||
echo "iso88597 ISO-8859-7" |
||||
echo "iso88598 ISO-8859-8" |
||||
echo "iso88599 ISO-8859-9" |
||||
echo "iso885915 ISO-8859-15" |
||||
echo "roman8 HP-ROMAN8" |
||||
echo "arabic8 HP-ARABIC8" |
||||
echo "greek8 HP-GREEK8" |
||||
echo "hebrew8 HP-HEBREW8" |
||||
echo "turkish8 HP-TURKISH8" |
||||
echo "kana8 HP-KANA8" |
||||
echo "tis620 TIS-620" |
||||
echo "big5 BIG5" |
||||
echo "eucJP EUC-JP" |
||||
echo "eucKR EUC-KR" |
||||
echo "eucTW EUC-TW" |
||||
echo "hp15CN GB2312" |
||||
#echo "ccdc ?" # what is this? |
||||
echo "SJIS SHIFT_JIS" |
||||
echo "utf8 UTF-8" |
||||
;; |
||||
irix*) |
||||
echo "ISO8859-1 ISO-8859-1" |
||||
echo "ISO8859-2 ISO-8859-2" |
||||
echo "ISO8859-5 ISO-8859-5" |
||||
echo "ISO8859-7 ISO-8859-7" |
||||
echo "ISO8859-9 ISO-8859-9" |
||||
echo "eucCN GB2312" |
||||
echo "eucJP EUC-JP" |
||||
echo "eucKR EUC-KR" |
||||
echo "eucTW EUC-TW" |
||||
;; |
||||
osf*) |
||||
echo "ISO8859-1 ISO-8859-1" |
||||
echo "ISO8859-2 ISO-8859-2" |
||||
echo "ISO8859-4 ISO-8859-4" |
||||
echo "ISO8859-5 ISO-8859-5" |
||||
echo "ISO8859-7 ISO-8859-7" |
||||
echo "ISO8859-8 ISO-8859-8" |
||||
echo "ISO8859-9 ISO-8859-9" |
||||
echo "ISO8859-15 ISO-8859-15" |
||||
echo "cp850 CP850" |
||||
echo "big5 BIG5" |
||||
echo "dechanyu DEC-HANYU" |
||||
echo "dechanzi GB2312" |
||||
echo "deckanji DEC-KANJI" |
||||
echo "deckorean EUC-KR" |
||||
echo "eucJP EUC-JP" |
||||
echo "eucKR EUC-KR" |
||||
echo "eucTW EUC-TW" |
||||
echo "GBK GBK" |
||||
echo "KSC5601 CP949" |
||||
echo "sdeckanji EUC-JP" |
||||
echo "SJIS SHIFT_JIS" |
||||
echo "TACTIS TIS-620" |
||||
echo "UTF-8 UTF-8" |
||||
;; |
||||
solaris*) |
||||
echo "646 ASCII" |
||||
echo "ISO8859-1 ISO-8859-1" |
||||
echo "ISO8859-2 ISO-8859-2" |
||||
echo "ISO8859-4 ISO-8859-4" |
||||
echo "ISO8859-5 ISO-8859-5" |
||||
echo "ISO8859-6 ISO-8859-6" |
||||
echo "ISO8859-7 ISO-8859-7" |
||||
echo "ISO8859-8 ISO-8859-8" |
||||
echo "ISO8859-9 ISO-8859-9" |
||||
echo "ISO8859-15 ISO-8859-15" |
||||
echo "koi8-r KOI8-R" |
||||
echo "BIG5 BIG5" |
||||
echo "gb2312 GB2312" |
||||
echo "cns11643 EUC-TW" |
||||
echo "5601 EUC-KR" |
||||
echo "eucJP EUC-JP" |
||||
echo "PCK SHIFT_JIS" |
||||
echo "TIS620.2533 TIS-620" |
||||
#echo "sun_eu_greek ?" # what is this? |
||||
echo "UTF-8 UTF-8" |
||||
;; |
||||
freebsd*) |
||||
# FreeBSD 4.2 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 "US-ASCII ASCII" |
||||
for l in la_LN lt_LN; do |
||||
echo "$l.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 la_LN \ |
||||
lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do |
||||
echo "$l.ISO_8859-1 ISO-8859-1" |
||||
echo "$l.DIS_8859-15 ISO-8859-15" |
||||
done |
||||
for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do |
||||
echo "$l.ISO_8859-2 ISO-8859-2" |
||||
done |
||||
for l in la_LN lt_LT; do |
||||
echo "$l.ISO_8859-4 ISO-8859-4" |
||||
done |
||||
for l in ru_RU ru_SU; do |
||||
echo "$l.KOI8-R KOI8-R" |
||||
echo "$l.ISO_8859-5 ISO-8859-5" |
||||
echo "$l.CP866 CP866" |
||||
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 "ja_JP.Shift_JIS SHIFT_JIS" |
||||
echo "ko_KR.EUC EUC-KR" |
||||
;; |
||||
beos*) |
||||
# BeOS has a single locale, and it has UTF-8 encoding. |
||||
echo "* UTF-8" |
||||
;; |
||||
msdosdjgpp*) |
||||
# DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore |
||||
# localcharset.c falls back to using the full locale name |
||||
# from the environment variables. |
||||
echo "#" |
||||
echo "# The encodings given here may not all be correct." |
||||
echo "# If you find that the encoding given for your language and" |
||||
echo "# country is not the one your DOS machine actually uses, just" |
||||
echo "# correct it in this file, and send a mail to" |
||||
echo "# Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>" |
||||
echo "# and Bruno Haible <haible@clisp.cons.org>." |
||||
echo "#" |
||||
echo "C ASCII" |
||||
# ISO-8859-1 languages |
||||
echo "ca CP850" |
||||
echo "ca_ES CP850" |
||||
echo "da CP865" # not CP850 ?? |
||||
echo "da_DK CP865" # not CP850 ?? |
||||
echo "de CP850" |
||||
echo "de_AT CP850" |
||||
echo "de_CH CP850" |
||||
echo "de_DE CP850" |
||||
echo "en CP850" |
||||
echo "en_AU CP850" # not CP437 ?? |
||||
echo "en_CA CP850" |
||||
echo "en_GB CP850" |
||||
echo "en_NZ CP437" |
||||
echo "en_US CP437" |
||||
echo "en_ZA CP850" # not CP437 ?? |
||||
echo "es CP850" |
||||
echo "es_AR CP850" |
||||
echo "es_BO CP850" |
||||
echo "es_CL CP850" |
||||
echo "es_CO CP850" |
||||
echo "es_CR CP850" |
||||
echo "es_CU CP850" |
||||
echo "es_DO CP850" |
||||
echo "es_EC CP850" |
||||
echo "es_ES CP850" |
||||
echo "es_GT CP850" |
||||
echo "es_HN CP850" |
||||
echo "es_MX CP850" |
||||
echo "es_NI CP850" |
||||
echo "es_PA CP850" |
||||
echo "es_PY CP850" |
||||
echo "es_PE CP850" |
||||
echo "es_SV CP850" |
||||
echo "es_UY CP850" |
||||
echo "es_VE CP850" |
||||
echo "et CP850" |
||||
echo "et_EE CP850" |
||||
echo "eu CP850" |
||||
echo "eu_ES CP850" |
||||
echo "fi CP850" |
||||
echo "fi_FI CP850" |
||||
echo "fr CP850" |
||||
echo "fr_BE CP850" |
||||
echo "fr_CA CP850" |
||||
echo "fr_CH CP850" |
||||
echo "fr_FR CP850" |
||||
echo "ga CP850" |
||||
echo "ga_IE CP850" |
||||
echo "gd CP850" |
||||
echo "gd_GB CP850" |
||||
echo "gl CP850" |
||||
echo "gl_ES CP850" |
||||
echo "id CP850" # not CP437 ?? |
||||
echo "id_ID CP850" # not CP437 ?? |
||||
echo "is CP861" # not CP850 ?? |
||||
echo "is_IS CP861" # not CP850 ?? |
||||
echo "it CP850" |
||||
echo "it_CH CP850" |
||||
echo "it_IT CP850" |
||||
echo "lt CP775" |
||||
echo "lt_LT CP775" |
||||
echo "lv CP775" |
||||
echo "lv_LV CP775" |
||||
echo "nb CP865" # not CP850 ?? |
||||
echo "nb_NO CP865" # not CP850 ?? |
||||
echo "nl CP850" |
||||
echo "nl_BE CP850" |
||||
echo "nl_NL CP850" |
||||
echo "nn CP865" # not CP850 ?? |
||||
echo "nn_NO CP865" # not CP850 ?? |
||||
echo "no CP865" # not CP850 ?? |
||||
echo "no_NO CP865" # not CP850 ?? |
||||
echo "pt CP850" |
||||
echo "pt_BR CP850" |
||||
echo "pt_PT CP850" |
||||
echo "sv CP850" |
||||
echo "sv_SE CP850" |
||||
# ISO-8859-2 languages |
||||
echo "cs CP852" |
||||
echo "cs_CZ CP852" |
||||
echo "hr CP852" |
||||
echo "hr_HR CP852" |
||||
echo "hu CP852" |
||||
echo "hu_HU CP852" |
||||
echo "pl CP852" |
||||
echo "pl_PL CP852" |
||||
echo "ro CP852" |
||||
echo "ro_RO CP852" |
||||
echo "sk CP852" |
||||
echo "sk_SK CP852" |
||||
echo "sl CP852" |
||||
echo "sl_SI CP852" |
||||
echo "sq CP852" |
||||
echo "sq_AL CP852" |
||||
echo "sr CP852" # CP852 or CP866 or CP855 ?? |
||||
echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? |
||||
# ISO-8859-3 languages |
||||
echo "mt CP850" |
||||
echo "mt_MT CP850" |
||||
# ISO-8859-5 languages |
||||
echo "be CP866" |
||||
echo "be_BE CP866" |
||||
echo "bg CP866" # not CP855 ?? |
||||
echo "bg_BG CP866" # not CP855 ?? |
||||
echo "mk CP866" # not CP855 ?? |
||||
echo "mk_MK CP866" # not CP855 ?? |
||||
echo "ru KOI8-R" # not CP866 ?? |
||||
echo "ru_RU KOI8-R" # not CP866 ?? |
||||
# ISO-8859-6 languages |
||||
echo "ar CP864" |
||||
echo "ar_AE CP864" |
||||
echo "ar_DZ CP864" |
||||
echo "ar_EG CP864" |
||||
echo "ar_IQ CP864" |
||||
echo "ar_IR CP864" |
||||
echo "ar_JO CP864" |
||||
echo "ar_KW CP864" |
||||
echo "ar_MA CP864" |
||||
echo "ar_OM CP864" |
||||
echo "ar_QA CP864" |
||||
echo "ar_SA CP864" |
||||
echo "ar_SY CP864" |
||||
# ISO-8859-7 languages |
||||
echo "el CP869" |
||||
echo "el_GR CP869" |
||||
# ISO-8859-8 languages |
||||
echo "he CP862" |
||||
echo "he_IL CP862" |
||||
# ISO-8859-9 languages |
||||
echo "tr CP857" |
||||
echo "tr_TR CP857" |
||||
# Japanese |
||||
echo "ja CP932" |
||||
echo "ja_JP CP932" |
||||
# Chinese |
||||
echo "zh_CN GBK" |
||||
echo "zh_TW CP950" # not CP938 ?? |
||||
# Korean |
||||
echo "kr CP949" # not CP934 ?? |
||||
echo "kr_KR CP949" # not CP934 ?? |
||||
# Thai |
||||
echo "th CP874" |
||||
echo "th_TH CP874" |
||||
# Other |
||||
echo "eo CP850" |
||||
echo "eo_EO CP850" |
||||
;; |
||||
esac |
@ -0,0 +1,57 @@ |
||||
/* Implementation of the dcgettext(3) function.
|
||||
Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. |
||||
|
||||
This program is free software; you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation; either version 2, or (at your option) |
||||
any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program; if not, write to the Free Software Foundation, |
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
||||
|
||||
#ifdef HAVE_CONFIG_H |
||||
# include <config.h> |
||||
#endif |
||||
|
||||
#include "gettextP.h" |
||||
#ifdef _LIBC |
||||
# include <libintl.h> |
||||
#else |
||||
# include "libgnuintl.h" |
||||
#endif |
||||
|
||||
/* @@ end of prolog @@ */ |
||||
|
||||
/* Names for the libintl functions are a problem. They must not clash
|
||||
with existing names and they should follow ANSI C. But this source |
||||
code is also used in GNU C Library where the names have a __ |
||||
prefix. So we have to make a difference here. */ |
||||
#ifdef _LIBC |
||||
# define DCGETTEXT __dcgettext |
||||
# define DCIGETTEXT __dcigettext |
||||
#else |
||||
# define DCGETTEXT dcgettext__ |
||||
# define DCIGETTEXT dcigettext__ |
||||
#endif |
||||
|
||||
/* 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; |
||||
{ |
||||
return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); |
||||
} |
||||
|
||||
#ifdef _LIBC |
||||
/* Alias for function name in GNU C Library. */ |
||||
weak_alias (__dcgettext, dcgettext); |
||||
#endif |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,59 @@ |
||||
/* Implementation of the dcngettext(3) function.
|
||||
Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. |
||||
|
||||
This program is free software; you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation; either version 2, or (at your option) |
||||
any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program; if not, write to the Free Software Foundation, |
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
||||
|
||||
#ifdef HAVE_CONFIG_H |
||||
# include <config.h> |
||||
#endif |
||||
|
||||
#include "gettextP.h" |
||||
#ifdef _LIBC |
||||
# include <libintl.h> |
||||
#else |
||||
# include "libgnuintl.h" |
||||
#endif |
||||
|
||||
/* @@ end of prolog @@ */ |
||||
|
||||
/* Names for the libintl functions are a problem. They must not clash
|
||||
with existing names and they should follow ANSI C. But this source |
||||
code is also used in GNU C Library where the names have a __ |
||||
prefix. So we have to make a difference here. */ |
||||
#ifdef _LIBC |
||||
# define DCNGETTEXT __dcngettext |
||||
# define DCIGETTEXT __dcigettext |
||||
#else |
||||
# define DCNGETTEXT dcngettext__ |
||||
# define DCIGETTEXT dcigettext__ |
||||
#endif |
||||
|
||||
/* 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; |
||||
{ |
||||
return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); |
||||
} |
||||
|
||||
#ifdef _LIBC |
||||
/* Alias for function name in GNU C Library. */ |
||||
weak_alias (__dcngettext, dcngettext); |
||||
#endif |
@ -0,0 +1,58 @@ |
||||
/* Implementation of the dgettext(3) function.
|
||||
Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. |
||||
|
||||
This program is free software; you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation; either version 2, or (at your option) |
||||
any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program; if not, write to the Free Software Foundation, |
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
||||
|
||||
#ifdef HAVE_CONFIG_H |
||||
# include <config.h> |
||||
#endif |
||||
|
||||
#include <locale.h> |
||||
|
||||
#include "gettextP.h" |
||||
#ifdef _LIBC |
||||
# include <libintl.h> |
||||
#else |
||||
# include "libgnuintl.h" |
||||
#endif |
||||
|
||||
/* @@ end of prolog @@ */ |
||||
|
||||
/* Names for the libintl functions are a problem. They must not clash
|
||||
with existing names and they should follow ANSI C. But this source |
||||
code is also used in GNU C Library where the names have a __ |
||||
prefix. So we have to make a difference here. */ |
||||
#ifdef _LIBC |
||||
# define DGETTEXT __dgettext |
||||
# define DCGETTEXT __dcgettext |
||||
#else |
||||
# define DGETTEXT dgettext__ |
||||
# define DCGETTEXT dcgettext__ |
||||
#endif |
||||
|
||||
/* Look up MSGID in the DOMAINNAME message catalog of the current
|
||||
LC_MESSAGES locale. */ |
||||
char * |
||||
DGETTEXT (domainname, msgid) |
||||
const char *domainname; |
||||
const char *msgid; |
||||
{ |
||||
return DCGETTEXT (domainname, msgid, LC_MESSAGES); |
||||
} |
||||
|
||||
#ifdef _LIBC |
||||
/* Alias for function name in GNU C Library. */ |
||||
weak_alias (__dgettext, dgettext); |
||||
#endif |
@ -0,0 +1,60 @@ |
||||
/* Implementation of the dngettext(3) function.
|
||||
Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. |
||||
|
||||
This program is free software; you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation; either version 2, or (at your option) |
||||
any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program; if not, write to the Free Software Foundation, |
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
||||
|
||||
#ifdef HAVE_CONFIG_H |
||||
# include <config.h> |
||||
#endif |
||||
|
||||
#include <locale.h> |
||||
|
||||
#include "gettextP.h" |
||||
#ifdef _LIBC |
||||
# include <libintl.h> |
||||
#else |
||||
# include "libgnuintl.h" |
||||
#endif |
||||
|
||||
/* @@ end of prolog @@ */ |
||||
|
||||
/* Names for the libintl functions are a problem. They must not clash
|
||||
with existing names and they should follow ANSI C. But this source |
||||
code is also used in GNU C Library where the names have a __ |
||||
prefix. So we have to make a difference here. */ |
||||
#ifdef _LIBC |
||||
# define DNGETTEXT __dngettext |
||||
# define DCNGETTEXT __dcngettext |
||||
#else |
||||
# define DNGETTEXT dngettext__ |
||||
# define DCNGETTEXT dcngettext__ |
||||
#endif |
||||
|
||||
/* 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; |
||||
{ |
||||
return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); |
||||
} |
||||
|
||||
#ifdef _LIBC |
||||
/* Alias for function name in GNU C Library. */ |
||||
weak_alias (__dngettext, dngettext); |
||||
#endif |
@ -0,0 +1,191 @@ |
||||
/* Copyright (C) 1995-1998, 2000, 2001 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 under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation; either version 2, or (at your option) |
||||
any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program; if not, write to the Free Software Foundation, |
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
||||
|
||||
#ifdef HAVE_CONFIG_H |
||||
# include <config.h> |
||||
#endif |
||||
|
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
#include <sys/types.h> |
||||
|
||||
#include "loadinfo.h" |
||||
|
||||
/* On some strange systems still no definition of NULL is found. Sigh! */ |
||||
#ifndef NULL |
||||
# if defined __STDC__ && __STDC__ |
||||
# define NULL ((void *) 0) |
||||
# else |
||||
# define NULL 0 |
||||
# endif |
||||
#endif |
||||
|
||||
/* @@ end of prolog @@ */ |
||||
|
||||
char * |
||||
_nl_find_language (name) |
||||
const char *name; |
||||
{ |
||||
while (name[0] != '\0' && name[0] != '_' && name[0] != '@' |
||||
&& name[0] != '+' && name[0] != ',') |
||||
++name; |
||||
|
||||
return (char *) 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; |
||||
{ |
||||
enum { undecided, xpg, cen } syntax; |
||||
char *cp; |
||||
int mask; |
||||
|
||||
*modifier = NULL; |
||||
*territory = NULL; |
||||
*codeset = NULL; |
||||
*normalized_codeset = NULL; |
||||
*special = NULL; |
||||
*sponsor = NULL; |
||||
*revision = NULL; |
||||
|
||||
/* Now we determine the single parts of the locale name. First
|
||||
look for the language. Termination symbols are `_' and `@' if |
||||
we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ |
||||
mask = 0; |
||||
syntax = undecided; |
||||
*language = cp = name; |
||||
cp = _nl_find_language (*language); |
||||
|
||||
if (*language == cp) |
||||
/* This does not make sense: language has to be specified. Use
|
||||
this entry as it is without exploding. Perhaps it is an alias. */ |
||||
cp = strchr (*language, '\0'); |
||||
else if (cp[0] == '_') |
||||
{ |
||||
/* Next is the territory. */ |
||||
cp[0] = '\0'; |
||||
*territory = ++cp; |
||||
|
||||
while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' |
||||
&& cp[0] != '+' && cp[0] != ',' && cp[0] != '_') |
||||
++cp; |
||||
|
||||
mask |= TERRITORY; |
||||
|
||||
if (cp[0] == '.') |
||||
{ |
||||
/* Next is the codeset. */ |
||||
syntax = xpg; |
||||
cp[0] = '\0'; |
||||
*codeset = ++cp; |
||||
|
||||
while (cp[0] != '\0' && cp[0] != '@') |
||||