mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-21 10:09:57 +01:00
po,intl: Update to 0.19.3.
This commit is contained in:
parent
52c6c30647
commit
8adbf74b93
@ -868,7 +868,7 @@ dnl Checks for libraries.
|
||||
# needs to find this string. Without
|
||||
# it "make distcheck" may fail.
|
||||
AM_PO_SUBDIRS
|
||||
AM_GNU_GETTEXT_VERSION([0.18.1])
|
||||
AM_GNU_GETTEXT_VERSION([0.19.3])
|
||||
if test "$try_gettext" = yes; then
|
||||
AM_GNU_GETTEXT(,[need-ngettext])
|
||||
# gettext requires some extra checks. These really should be part of
|
||||
|
@ -1,25 +1,23 @@
|
||||
# Makefile for directory with message catalog handling library of GNU gettext
|
||||
# Copyright (C) 1995-1998, 2000-2007, 2009-2010 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1995-1998, 2000-2007, 2009-2012 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 free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# 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.
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
# USA.
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
PACKAGE = @PACKAGE@
|
||||
VERSION = @VERSION@
|
||||
|
||||
SHELL = /bin/sh
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@ -125,12 +123,13 @@ HEADERS = \
|
||||
lock.h \
|
||||
relocatable.h \
|
||||
tsearch.h tsearch.c \
|
||||
verify.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
|
||||
libgnuintl.in.h
|
||||
SOURCES = \
|
||||
bindtextdom.c \
|
||||
dcgettext.c \
|
||||
@ -159,6 +158,7 @@ SOURCES = \
|
||||
printf.c \
|
||||
setlocale.c \
|
||||
version.c \
|
||||
xsize.c \
|
||||
osdep.c \
|
||||
os2compat.c \
|
||||
intl-exports.c \
|
||||
@ -191,6 +191,7 @@ OBJECTS = \
|
||||
printf.$lo \
|
||||
setlocale.$lo \
|
||||
version.$lo \
|
||||
xsize.$lo \
|
||||
osdep.$lo \
|
||||
intl-compat.$lo
|
||||
OBJECTS_RES_yes = libintl.res.$lo
|
||||
@ -200,9 +201,10 @@ config.charset locale.alias ref-add.sin ref-del.sin export.h libintl.rc \
|
||||
$(HEADERS) $(SOURCES)
|
||||
DISTFILES.generated = plural.c
|
||||
DISTFILES.normal = VERSION
|
||||
DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc README.woe32
|
||||
DISTFILES.gettext = ChangeLog COPYING.LIB libintl.glibc README.woe32
|
||||
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 \
|
||||
COPYING.LIB-2 COPYING.LIB-2.0 COPYING.LIB-2.1 \
|
||||
gettext.h libgettext.h plural-eval.c libgnuintl.h \
|
||||
libgnuintl.h_vms Makefile.vms libgnuintl.h.msvc-static \
|
||||
libgnuintl.h.msvc-shared Makefile.msvc
|
||||
|
||||
@ -232,7 +234,7 @@ libintl.la libgnuintl.la: $(OBJECTS) $(OBJECTS_RES_@WOE32@)
|
||||
# Maintainers of other packages that include the intl directory must *not*
|
||||
# change these values.
|
||||
LTV_CURRENT=9
|
||||
LTV_REVISION=1
|
||||
LTV_REVISION=2
|
||||
LTV_AGE=1
|
||||
|
||||
.SUFFIXES:
|
||||
@ -299,6 +301,8 @@ setlocale.lo: $(srcdir)/setlocale.c
|
||||
$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/setlocale.c
|
||||
version.lo: $(srcdir)/version.c
|
||||
$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/version.c
|
||||
xsize.lo: $(srcdir)/xsize.c
|
||||
$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/xsize.c
|
||||
osdep.lo: $(srcdir)/osdep.c
|
||||
$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/osdep.c
|
||||
intl-compat.lo: $(srcdir)/intl-compat.c
|
||||
@ -341,14 +345,14 @@ ref-del.sed: $(srcdir)/ref-del.sin
|
||||
|
||||
INCLUDES = -I. -I$(srcdir) -I..
|
||||
|
||||
libgnuintl.h: $(srcdir)/libgnuintl.h.in
|
||||
libgnuintl.h: $(srcdir)/libgnuintl.in.h
|
||||
sed -e '/IN_LIBGLOCALE/d' \
|
||||
-e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
|
||||
-e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
|
||||
-e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \
|
||||
-e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
|
||||
-e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
|
||||
< $(srcdir)/libgnuintl.h.in \
|
||||
< $(srcdir)/libgnuintl.in.h \
|
||||
| if test '@WOE32DLL@' = yes; then \
|
||||
sed -e 's/extern \([^()]*\);/extern __declspec (dllimport) \1;/'; \
|
||||
else \
|
||||
@ -359,14 +363,14 @@ libgnuintl.h: $(srcdir)/libgnuintl.h.in
|
||||
| sed -e 's,@''HAVE_VISIBILITY''@,@HAVE_VISIBILITY@,g' \
|
||||
> libgnuintl.h
|
||||
|
||||
libintl.h: $(srcdir)/libgnuintl.h.in
|
||||
libintl.h: $(srcdir)/libgnuintl.in.h
|
||||
sed -e '/IN_LIBGLOCALE/d' \
|
||||
-e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
|
||||
-e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
|
||||
-e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \
|
||||
-e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
|
||||
-e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
|
||||
< $(srcdir)/libgnuintl.h.in > libintl.h
|
||||
< $(srcdir)/libgnuintl.in.h > libintl.h
|
||||
|
||||
charset.alias: $(srcdir)/config.charset
|
||||
$(SHELL) $(srcdir)/config.charset '@host@' > t-$@
|
||||
@ -378,7 +382,7 @@ check: all
|
||||
# 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'.
|
||||
# package, you have to use "configure --with-included-gettext".
|
||||
install: install-exec install-data
|
||||
install-exec: all
|
||||
if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
|
||||
@ -456,8 +460,7 @@ install-data: all
|
||||
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||
$(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
|
||||
$(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
|
||||
$(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
|
||||
dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \
|
||||
dists="COPYING.LIB $(DISTFILES.common)"; \
|
||||
for file in $$dists; do \
|
||||
$(INSTALL_DATA) $(srcdir)/$$file \
|
||||
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||
@ -567,7 +570,7 @@ uninstall:
|
||||
: ; \
|
||||
fi
|
||||
if test "$(PACKAGE)" = "gettext-tools"; then \
|
||||
for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
|
||||
for file in VERSION COPYING.LIB $(DISTFILES.common) $(DISTFILES.generated); do \
|
||||
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
||||
done; \
|
||||
else \
|
||||
@ -586,7 +589,7 @@ dcigettext.$lo: $(srcdir)/eval-plural.h
|
||||
localcharset.$lo: $(srcdir)/localcharset.h
|
||||
bindtextdom.$lo dcigettext.$lo finddomain.$lo loadmsgcat.$lo localealias.$lo lock.$lo log.$lo: $(srcdir)/lock.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
|
||||
printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/xsize.c $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c
|
||||
|
||||
# A bison-2.1 generated plural.c includes <libintl.h> if ENABLE_NLS.
|
||||
PLURAL_DEPS_yes = libintl.h
|
||||
@ -619,7 +622,7 @@ clean: mostlyclean
|
||||
distclean: clean
|
||||
rm -f Makefile ID TAGS
|
||||
if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \
|
||||
rm -f ChangeLog.inst $(DISTFILES.normal); \
|
||||
rm -f $(DISTFILES.normal); \
|
||||
else \
|
||||
: ; \
|
||||
fi
|
||||
@ -629,7 +632,7 @@ maintainer-clean: distclean
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
|
||||
# GNU gettext needs not contain the file `VERSION' but contains some
|
||||
# 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
|
||||
@ -642,7 +645,7 @@ dist distdir: Makefile
|
||||
additional="$(DISTFILES.normal)"; \
|
||||
fi; \
|
||||
$(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
|
||||
for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
|
||||
for file in $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
|
||||
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
|
||||
cp -p $$dir/$$file $(distdir) || test $$file = Makefile.in || exit 1; \
|
||||
done; \
|
||||
|
@ -1 +1 @@
|
||||
GNU gettext library from gettext-0.18.1
|
||||
GNU gettext library from gettext-0.19.3
|
||||
|
@ -2,20 +2,18 @@
|
||||
Copyright (C) 1995-1998, 2000-2003, 2005-2006, 2008 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -3,20 +3,18 @@
|
||||
#
|
||||
# Copyright (C) 2000-2004, 2006-2010 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 free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# 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.
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
# USA.
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# The table consists of lines of the form
|
||||
# ALIAS CANONICAL
|
||||
@ -31,6 +29,8 @@
|
||||
# The current list of GNU canonical charset names is as follows.
|
||||
#
|
||||
# name MIME? used by which systems
|
||||
# (darwin = Mac OS X, woe32 = native Windows)
|
||||
#
|
||||
# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin cygwin
|
||||
# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
|
||||
# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Implementation of the dcgettext(3) function.
|
||||
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
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Implementation of the internal dcigettext function.
|
||||
Copyright (C) 1995-1999, 2000-2009 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995-1999, 2000-2010, 2012 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Tell glibc's <string.h> to provide a prototype for mempcpy().
|
||||
This must come before <config.h> because <config.h> may include
|
||||
@ -374,7 +372,7 @@ static const char *get_output_charset (struct binding *domainbinding)
|
||||
#endif
|
||||
|
||||
|
||||
/* For those loosing systems which don't have `alloca' we have to add
|
||||
/* For those losing systems which don't have `alloca' we have to add
|
||||
some additional code emulating it. */
|
||||
#ifdef HAVE_ALLOCA
|
||||
/* Nothing has to be done. */
|
||||
@ -745,6 +743,11 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
|
||||
msgid1, 1, &retlen);
|
||||
#endif
|
||||
|
||||
/* Resource problems are not fatal, instead we return no
|
||||
translation. */
|
||||
if (__builtin_expect (retval == (char *) -1, 0))
|
||||
goto return_untranslated;
|
||||
|
||||
if (retval != NULL)
|
||||
{
|
||||
domain = domain->successor[cnt];
|
||||
@ -1105,6 +1108,11 @@ _nl_find_msg (struct loaded_l10nfile *domain_file,
|
||||
_nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen);
|
||||
# endif
|
||||
|
||||
/* Resource problems are fatal. If we continue onwards we will
|
||||
only attempt to calloc a new conv_tab and fail later. */
|
||||
if (__builtin_expect (nullentry == (char *) -1, 0))
|
||||
return (char *) -1;
|
||||
|
||||
if (nullentry != NULL)
|
||||
{
|
||||
const char *charsetstr;
|
||||
@ -1153,7 +1161,8 @@ _nl_find_msg (struct loaded_l10nfile *domain_file,
|
||||
# if HAVE_ICONV
|
||||
/* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
|
||||
we want to use transliteration. */
|
||||
# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \
|
||||
# if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) \
|
||||
&& !defined __UCLIBC__) \
|
||||
|| _LIBICONV_VERSION >= 0x0105
|
||||
if (strchr (outcharset, '/') == NULL)
|
||||
{
|
||||
@ -1329,7 +1338,7 @@ _nl_find_msg (struct loaded_l10nfile *domain_file,
|
||||
freemem_size);
|
||||
# ifdef _LIBC
|
||||
if (newmem != NULL)
|
||||
transmem_list = transmem_list->next;
|
||||
transmem_list = newmem;
|
||||
else
|
||||
{
|
||||
struct transmem_list *old = transmem_list;
|
||||
@ -1344,6 +1353,16 @@ _nl_find_msg (struct loaded_l10nfile *domain_file,
|
||||
malloc_count = 1;
|
||||
freemem_size = INITIAL_BLOCK_SIZE;
|
||||
newmem = (transmem_block_t *) malloc (freemem_size);
|
||||
# ifdef _LIBC
|
||||
if (newmem != NULL)
|
||||
{
|
||||
/* Add the block to the list of blocks we have to free
|
||||
at some point. */
|
||||
newmem->next = transmem_list;
|
||||
transmem_list = newmem;
|
||||
}
|
||||
/* Fall through and return -1. */
|
||||
# endif
|
||||
}
|
||||
if (__builtin_expect (newmem == NULL, 0))
|
||||
{
|
||||
@ -1354,11 +1373,6 @@ _nl_find_msg (struct loaded_l10nfile *domain_file,
|
||||
}
|
||||
|
||||
# ifdef _LIBC
|
||||
/* Add the block to the list of blocks we have to free
|
||||
at some point. */
|
||||
newmem->next = transmem_list;
|
||||
transmem_list = newmem;
|
||||
|
||||
freemem = (unsigned char *) newmem->data;
|
||||
freemem_size -= offsetof (struct transmem_list, data);
|
||||
# else
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Implementation of the dcngettext(3) function.
|
||||
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
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Implementation of the dgettext(3) function.
|
||||
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
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Implementation of the dngettext(3) function.
|
||||
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
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Plural expression evaluation.
|
||||
Copyright (C) 2000-2003, 2007 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef STATIC
|
||||
#define STATIC static
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Copyright (C) 1995-1998, 2000-2001, 2003, 2005, 2007 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 Library General Public License as published
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -2,20 +2,18 @@
|
||||
Copyright (C) 1995-1999, 2000-2001, 2003-2007 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
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Implementation of gettext(3) function.
|
||||
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
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -2,20 +2,18 @@
|
||||
Copyright (C) 1995-1999, 2000-2007, 2009-2010 Free Software Foundation, Inc.
|
||||
Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
|
||||
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _GETTEXTP_H
|
||||
#define _GETTEXTP_H
|
||||
|
18
intl/gmo.h
18
intl/gmo.h
@ -1,20 +1,18 @@
|
||||
/* Description of GNU message catalog format: general file layout.
|
||||
Copyright (C) 1995, 1997, 2000-2002, 2004, 2006 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _GETTEXT_H
|
||||
#define _GETTEXT_H 1
|
||||
|
@ -13,9 +13,8 @@
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Description of GNU message catalog format: string hashing function.
|
||||
Copyright (C) 1995, 1997-1998, 2000-2003, 2005 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* @@ end of prolog @@ */
|
||||
|
||||
|
@ -1,21 +1,19 @@
|
||||
/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
|
||||
Library.
|
||||
Copyright (C) 1995, 2000-2003, 2005 Software Foundation, Inc.
|
||||
Copyright (C) 1995, 2000-2003, 2005 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -2,23 +2,25 @@
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2006.
|
||||
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* IMP(x) is a symbol that contains the address of x. */
|
||||
#define IMP(x) _imp__##x
|
||||
#if USER_LABEL_PREFIX_UNDERSCORE
|
||||
# define IMP(x) _imp__##x
|
||||
#else
|
||||
# define IMP(x) __imp_##x
|
||||
#endif
|
||||
|
||||
/* Ensure that the variable x is exported from the library, and that a
|
||||
pseudo-variable IMP(x) is available. */
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Copyright (C) 1995-1999, 2000-2007 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 Library General Public License as published
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Tell glibc's <string.h> to provide a prototype for stpcpy().
|
||||
This must come before <config.h> because <config.h> may include
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Determine the user's language preferences.
|
||||
Copyright (C) 2004-2007 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Bruno Haible <bruno@clisp.org>.
|
||||
Win32 code originally by Michele Cicciotti <hackbunny@reactos.com>. */
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Message catalogs for internationalization.
|
||||
Copyright (C) 1995-1997, 2000-2010 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995-1997, 2000-2012 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _LIBINTL_H
|
||||
#define _LIBINTL_H 1
|
||||
@ -56,7 +54,7 @@ extern "C" {
|
||||
|
||||
|
||||
/* Version number: (major<<16) + (minor<<8) + subminor */
|
||||
#define LIBINTL_VERSION 0x001201
|
||||
#define LIBINTL_VERSION 0x001303
|
||||
extern int libintl_version;
|
||||
|
||||
|
||||
@ -178,7 +176,7 @@ extern char *dcgettext (const char *__domainname, const char *__msgid,
|
||||
#endif
|
||||
|
||||
|
||||
/* Similar to `gettext' but select the plural form corresponding to the
|
||||
/* Similar to 'gettext' but select the plural form corresponding to the
|
||||
number N. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
|
||||
@ -199,7 +197,7 @@ extern char *ngettext (const char *__msgid1, const char *__msgid2,
|
||||
_INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2);
|
||||
#endif
|
||||
|
||||
/* Similar to `dgettext' but select the plural form corresponding to the
|
||||
/* Similar to 'dgettext' but select the plural form corresponding to the
|
||||
number N. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
|
||||
@ -221,7 +219,7 @@ extern char *dngettext (const char *__domainname,
|
||||
_INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3);
|
||||
#endif
|
||||
|
||||
/* Similar to `dcgettext' but select the plural form corresponding to the
|
||||
/* Similar to 'dcgettext' but select the plural form corresponding to the
|
||||
number N. */
|
||||
#ifdef _INTL_REDIRECT_INLINE
|
||||
extern char *libintl_dcngettext (const char *__domainname,
|
||||
@ -431,9 +429,11 @@ extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
|
||||
/* Support for the locale chosen by the user. */
|
||||
#if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
|
||||
|
||||
#ifndef GNULIB_defined_setlocale /* don't override gnulib */
|
||||
#undef setlocale
|
||||
#define setlocale libintl_setlocale
|
||||
extern char *setlocale (int, const char *);
|
||||
#endif
|
||||
|
||||
#if @HAVE_NEWLOCALE@
|
||||
|
@ -19,7 +19,7 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "04090000" /* Lang = US English, Charset = ASCII */
|
||||
BEGIN
|
||||
VALUE "Comments", "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\0"
|
||||
VALUE "Comments", "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see <http://www.gnu.org/licenses/>.\0"
|
||||
VALUE "CompanyName", "Free Software Foundation\0"
|
||||
VALUE "FileDescription", "LGPLed libintl for Windows NT/2000/XP/Vista/7 and Windows 95/98/ME\0"
|
||||
VALUE "FileVersion", PACKAGE_VERSION_STRING "\0"
|
||||
|
@ -2,20 +2,18 @@
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _LOADINFO_H
|
||||
#define _LOADINFO_H 1
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Load needed message catalogs.
|
||||
Copyright (C) 1995-1999, 2000-2008 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995-1999, 2000-2008, 2010 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Tell glibc's <string.h> to provide a prototype for mempcpy().
|
||||
This must come before <config.h> because <config.h> may include
|
||||
@ -27,6 +25,7 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
@ -101,6 +100,10 @@ char *alloca ();
|
||||
# include "lock.h"
|
||||
#endif
|
||||
|
||||
#ifdef _LIBC
|
||||
# define PRI_MACROS_BROKEN 0
|
||||
#endif
|
||||
|
||||
/* Provide fallback values for macros that ought to be defined in <inttypes.h>.
|
||||
Note that our fallback values need not be literal strings, because we don't
|
||||
use them with preprocessor string concatenation. */
|
||||
@ -760,10 +763,12 @@ get_sysdep_segment_value (const char *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)
|
||||
#if defined _LIBC \
|
||||
|| ((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) \
|
||||
&& !defined __UCLIBC__)
|
||||
/* 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. */
|
||||
used for Farsi (Persian), some Indic languages, and maybe Arabic. */
|
||||
return "I";
|
||||
#else
|
||||
return "";
|
||||
@ -780,7 +785,7 @@ internal_function
|
||||
_nl_load_domain (struct loaded_l10nfile *domain_file,
|
||||
struct binding *domainbinding)
|
||||
{
|
||||
__libc_lock_define_initialized_recursive (static, lock)
|
||||
__libc_lock_define_initialized_recursive (static, lock);
|
||||
int fd = -1;
|
||||
size_t size;
|
||||
#ifdef _LIBC
|
||||
@ -847,13 +852,15 @@ _nl_load_domain (struct loaded_l10nfile *domain_file,
|
||||
data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
|
||||
MAP_PRIVATE, fd, 0);
|
||||
|
||||
if (__builtin_expect (data != (struct mo_file_header *) -1, 1))
|
||||
if (__builtin_expect (data != MAP_FAILED, 1))
|
||||
{
|
||||
/* mmap() call was successful. */
|
||||
close (fd);
|
||||
fd = -1;
|
||||
use_mmap = 1;
|
||||
}
|
||||
|
||||
assert (MAP_FAILED == (void *) -1);
|
||||
#endif
|
||||
|
||||
/* If the data is not yet available (i.e. mmap'ed) we try to load
|
||||
@ -1258,7 +1265,7 @@ _nl_load_domain (struct loaded_l10nfile *domain_file,
|
||||
default:
|
||||
/* This is an invalid revision. */
|
||||
invalid:
|
||||
/* This is an invalid .mo file. */
|
||||
/* This is an invalid .mo file or we ran out of resources. */
|
||||
free (domain->malloced);
|
||||
#ifdef HAVE_MMAP
|
||||
if (use_mmap)
|
||||
@ -1274,7 +1281,11 @@ _nl_load_domain (struct loaded_l10nfile *domain_file,
|
||||
/* No caches of converted translations so far. */
|
||||
domain->conversions = NULL;
|
||||
domain->nconversions = 0;
|
||||
#ifdef _LIBC
|
||||
__libc_rwlock_init (domain->conversions_lock);
|
||||
#else
|
||||
gl_rwlock_init (domain->conversions_lock);
|
||||
#endif
|
||||
|
||||
/* Get the header entry and look for a plural specification. */
|
||||
#ifdef IN_LIBGLOCALE
|
||||
@ -1283,6 +1294,13 @@ _nl_load_domain (struct loaded_l10nfile *domain_file,
|
||||
#else
|
||||
nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen);
|
||||
#endif
|
||||
if (__builtin_expect (nullentry == (char *) -1, 0))
|
||||
{
|
||||
#ifdef _LIBC
|
||||
__libc_rwlock_fini (domain->conversions_lock);
|
||||
#endif
|
||||
goto invalid;
|
||||
}
|
||||
EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);
|
||||
|
||||
out:
|
||||
@ -1310,7 +1328,7 @@ _nl_unload_domain (struct loaded_domain *domain)
|
||||
{
|
||||
struct converted_domain *convd = &domain->conversions[i];
|
||||
|
||||
free (convd->encoding);
|
||||
free ((char *) convd->encoding);
|
||||
if (convd->conv_tab != NULL && convd->conv_tab != (char **) -1)
|
||||
free (convd->conv_tab);
|
||||
if (convd->conv != (__gconv_t) -1)
|
||||
|
@ -1,21 +1,19 @@
|
||||
/* Determine a canonical name for the current locale's character encoding.
|
||||
|
||||
Copyright (C) 2000-2006, 2008-2010 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000-2006, 2008-2014 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Bruno Haible <bruno@clisp.org>. */
|
||||
|
||||
@ -31,11 +29,12 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET
|
||||
# define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */
|
||||
# define DARWIN7 /* Darwin 7 or newer, i.e. Mac OS X 10.3 or newer */
|
||||
#endif
|
||||
|
||||
#if defined _WIN32 || defined __WIN32__
|
||||
# define WIN32_NATIVE
|
||||
# define WINDOWS_NATIVE
|
||||
# include <locale.h>
|
||||
#endif
|
||||
|
||||
#if defined __EMX__
|
||||
@ -45,7 +44,7 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined WIN32_NATIVE
|
||||
#if !defined WINDOWS_NATIVE
|
||||
# include <unistd.h>
|
||||
# if HAVE_LANGINFO_CODESET
|
||||
# include <langinfo.h>
|
||||
@ -58,7 +57,7 @@
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
# endif
|
||||
#elif defined WIN32_NATIVE
|
||||
#elif defined WINDOWS_NATIVE
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
#endif
|
||||
@ -67,6 +66,11 @@
|
||||
# include <os2.h>
|
||||
#endif
|
||||
|
||||
/* For MB_CUR_MAX_L */
|
||||
#if defined DARWIN7
|
||||
# include <xlocale.h>
|
||||
#endif
|
||||
|
||||
#if ENABLE_RELOCATABLE
|
||||
# include "relocatable.h"
|
||||
#else
|
||||
@ -84,7 +88,7 @@
|
||||
#endif
|
||||
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
|
||||
/* Win32, Cygwin, OS/2, DOS */
|
||||
/* Native Windows, Cygwin, OS/2, DOS */
|
||||
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
|
||||
#endif
|
||||
|
||||
@ -124,7 +128,7 @@ get_charset_aliases (void)
|
||||
cp = charset_aliases;
|
||||
if (cp == NULL)
|
||||
{
|
||||
#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
|
||||
#if !(defined DARWIN7 || defined VMS || defined WINDOWS_NATIVE || defined __CYGWIN__)
|
||||
const char *dir;
|
||||
const char *base = "charset.alias";
|
||||
char *file_name;
|
||||
@ -229,8 +233,7 @@ get_charset_aliases (void)
|
||||
{
|
||||
/* Out of memory. */
|
||||
res_size = 0;
|
||||
if (old_res_ptr != NULL)
|
||||
free (old_res_ptr);
|
||||
free (old_res_ptr);
|
||||
break;
|
||||
}
|
||||
strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
|
||||
@ -310,7 +313,7 @@ get_charset_aliases (void)
|
||||
"DECKOREAN" "\0" "EUC-KR" "\0";
|
||||
# endif
|
||||
|
||||
# if defined WIN32_NATIVE || defined __CYGWIN__
|
||||
# if defined WINDOWS_NATIVE || defined __CYGWIN__
|
||||
/* To avoid the troubles of installing a separate file in the same
|
||||
directory as the DLL and of retrieving the DLL's directory at
|
||||
runtime, simply inline the aliases here. */
|
||||
@ -362,7 +365,7 @@ locale_charset (void)
|
||||
const char *codeset;
|
||||
const char *aliases;
|
||||
|
||||
#if !(defined WIN32_NATIVE || defined OS2)
|
||||
#if !(defined WINDOWS_NATIVE || defined OS2)
|
||||
|
||||
# if HAVE_LANGINFO_CODESET
|
||||
|
||||
@ -409,10 +412,10 @@ locale_charset (void)
|
||||
}
|
||||
}
|
||||
|
||||
/* Woe32 has a function returning the locale's codepage as a number:
|
||||
GetACP(). This encoding is used by Cygwin, unless the user has set
|
||||
the environment variable CYGWIN=codepage:oem (which very few people
|
||||
do).
|
||||
/* The Windows API has a function returning the locale's codepage as a
|
||||
number: GetACP(). This encoding is used by Cygwin, unless the user
|
||||
has set the environment variable CYGWIN=codepage:oem (which very few
|
||||
people do).
|
||||
Output directed to console windows needs to be converted (to
|
||||
GetOEMCP() if the console is using a raster font, or to
|
||||
GetConsoleOutputCP() if it is using a TrueType font). Cygwin does
|
||||
@ -455,18 +458,38 @@ locale_charset (void)
|
||||
|
||||
# endif
|
||||
|
||||
#elif defined WIN32_NATIVE
|
||||
#elif defined WINDOWS_NATIVE
|
||||
|
||||
static char buf[2 + 10 + 1];
|
||||
|
||||
/* Woe32 has a function returning the locale's codepage as a number:
|
||||
GetACP().
|
||||
When the output goes to a console window, it needs to be provided in
|
||||
GetOEMCP() encoding if the console is using a raster font, or in
|
||||
GetConsoleOutputCP() encoding if it is using a TrueType font.
|
||||
But in GUI programs and for output sent to files and pipes, GetACP()
|
||||
encoding is the best bet. */
|
||||
sprintf (buf, "CP%u", GetACP ());
|
||||
/* The Windows API has a function returning the locale's codepage as
|
||||
a number, but the value doesn't change according to what the
|
||||
'setlocale' call specified. So we use it as a last resort, in
|
||||
case the string returned by 'setlocale' doesn't specify the
|
||||
codepage. */
|
||||
char *current_locale = setlocale (LC_ALL, NULL);
|
||||
char *pdot;
|
||||
|
||||
/* If they set different locales for different categories,
|
||||
'setlocale' will return a semi-colon separated list of locale
|
||||
values. To make sure we use the correct one, we choose LC_CTYPE. */
|
||||
if (strchr (current_locale, ';'))
|
||||
current_locale = setlocale (LC_CTYPE, NULL);
|
||||
|
||||
pdot = strrchr (current_locale, '.');
|
||||
if (pdot)
|
||||
sprintf (buf, "CP%s", pdot + 1);
|
||||
else
|
||||
{
|
||||
/* The Windows API has a function returning the locale's codepage as a
|
||||
number: GetACP().
|
||||
When the output goes to a console window, it needs to be provided in
|
||||
GetOEMCP() encoding if the console is using a raster font, or in
|
||||
GetConsoleOutputCP() encoding if it is using a TrueType font.
|
||||
But in GUI programs and for output sent to files and pipes, GetACP()
|
||||
encoding is the best bet. */
|
||||
sprintf (buf, "CP%u", GetACP ());
|
||||
}
|
||||
codeset = buf;
|
||||
|
||||
#elif defined OS2
|
||||
@ -545,5 +568,12 @@ locale_charset (void)
|
||||
if (codeset[0] == '\0')
|
||||
codeset = "ASCII";
|
||||
|
||||
#ifdef DARWIN7
|
||||
/* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8"
|
||||
(the default codeset) does not work when MB_CUR_MAX is 1. */
|
||||
if (strcmp (codeset, "UTF-8") == 0 && MB_CUR_MAX_L (uselocale (NULL)) <= 1)
|
||||
codeset = "ASCII";
|
||||
#endif
|
||||
|
||||
return codeset;
|
||||
}
|
||||
|
@ -2,20 +2,18 @@
|
||||
Copyright (C) 2000-2003 Free Software Foundation, Inc.
|
||||
This file is part of the GNU CHARSET Library.
|
||||
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _LOCALCHARSET_H
|
||||
#define _LOCALCHARSET_H
|
||||
|
@ -1,20 +1,18 @@
|
||||
# Locale name alias data base.
|
||||
# Copyright (C) 1996-2001,2003,2007 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 free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# 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.
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
# USA.
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# The format of this file is the same as for the corresponding file of
|
||||
# the X Window System, which normally can be found in
|
||||
@ -29,7 +27,7 @@
|
||||
# Packages using this file:
|
||||
|
||||
bokmal nb_NO.ISO-8859-1
|
||||
bokmål nb_NO.ISO-8859-1
|
||||
bokm<EFBFBD>l nb_NO.ISO-8859-1
|
||||
catalan ca_ES.ISO-8859-1
|
||||
croatian hr_HR.ISO-8859-2
|
||||
czech cs_CZ.ISO-8859-2
|
||||
@ -40,7 +38,7 @@ dutch nl_NL.ISO-8859-1
|
||||
eesti et_EE.ISO-8859-1
|
||||
estonian et_EE.ISO-8859-1
|
||||
finnish fi_FI.ISO-8859-1
|
||||
français fr_FR.ISO-8859-1
|
||||
fran<EFBFBD>ais fr_FR.ISO-8859-1
|
||||
french fr_FR.ISO-8859-1
|
||||
galego gl_ES.ISO-8859-1
|
||||
galician gl_ES.ISO-8859-1
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Handle aliases for locale names.
|
||||
Copyright (C) 1995-1999, 2000-2001, 2003, 2005-2006 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Tell glibc's <string.h> to provide a prototype for mempcpy().
|
||||
This must come before <config.h> because <config.h> may include
|
||||
|
@ -1,24 +1,22 @@
|
||||
/* Determine name of the currently selected locale.
|
||||
Copyright (C) 1995-1999, 2000-2010 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995-2014 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Ulrich Drepper <drepper@gnu.org>, 1995. */
|
||||
/* Win32 code written by Tor Lillqvist <tml@iki.fi>. */
|
||||
/* MacOS X code written by Bruno Haible <bruno@clisp.org>. */
|
||||
/* Native Windows code written by Tor Lillqvist <tml@iki.fi>. */
|
||||
/* Mac OS X code written by Bruno Haible <bruno@clisp.org>. */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@ -36,7 +34,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#if HAVE_USELOCALE
|
||||
/* MacOS X 10.5 defines the locale_t type in <xlocale.h>. */
|
||||
/* Mac OS X 10.5 defines the locale_t type in <xlocale.h>. */
|
||||
# if defined __APPLE__ && defined __MACH__
|
||||
# include <xlocale.h>
|
||||
# endif
|
||||
@ -56,12 +54,16 @@
|
||||
#endif
|
||||
|
||||
#if defined _WIN32 || defined __WIN32__
|
||||
# define WIN32_NATIVE
|
||||
# define WINDOWS_NATIVE
|
||||
# if !defined IN_LIBINTL
|
||||
# include "glthread/lock.h"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined WIN32_NATIVE || defined __CYGWIN__ /* WIN32 or Cygwin */
|
||||
#if defined WINDOWS_NATIVE || defined __CYGWIN__ /* Native Windows or Cygwin */
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
# include <winnls.h>
|
||||
/* List of language codes, sorted by value:
|
||||
0x01 LANG_ARABIC
|
||||
0x02 LANG_BULGARIAN
|
||||
@ -1126,15 +1128,18 @@
|
||||
# ifndef LOCALE_SNAME
|
||||
# define LOCALE_SNAME 0x5c
|
||||
# endif
|
||||
# ifndef LOCALE_NAME_MAX_LENGTH
|
||||
# define LOCALE_NAME_MAX_LENGTH 85
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
|
||||
/* MacOS X 10.2 or newer */
|
||||
/* Mac OS X 10.2 or newer */
|
||||
|
||||
/* Canonicalize a MacOS X locale name to a Unix locale name.
|
||||
/* Canonicalize a Mac OS X locale name to a Unix locale name.
|
||||
NAME is a sufficiently large buffer.
|
||||
On input, it contains the MacOS X locale name.
|
||||
On input, it contains the Mac OS X locale name.
|
||||
On output, it contains the Unix locale name. */
|
||||
# if !defined IN_LIBINTL
|
||||
static
|
||||
@ -1147,9 +1152,9 @@ gl_locale_name_canonicalize (char *name)
|
||||
http://lists.apple.com/archives/carbon-dev/2005/Mar/msg00293.html */
|
||||
|
||||
/* Convert legacy (NeXTstep inherited) English names to Unix (ISO 639 and
|
||||
ISO 3166) names. Prior to MacOS X 10.3, there is no API for doing this.
|
||||
ISO 3166) names. Prior to Mac OS X 10.3, there is no API for doing this.
|
||||
Therefore we do it ourselves, using a table based on the results of the
|
||||
MacOS X 10.3.8 function
|
||||
Mac OS X 10.3.8 function
|
||||
CFLocaleCreateCanonicalLocaleIdentifierFromString(). */
|
||||
typedef struct { const char legacy[21+1]; const char unixy[5+1]; }
|
||||
legacy_entry;
|
||||
@ -1292,26 +1297,26 @@ gl_locale_name_canonicalize (char *name)
|
||||
typedef struct { const char langtag[7+1]; const char unixy[12+1]; }
|
||||
langtag_entry;
|
||||
static const langtag_entry langtag_table[] = {
|
||||
/* MacOS X has "az-Arab", "az-Cyrl", "az-Latn".
|
||||
/* Mac OS X has "az-Arab", "az-Cyrl", "az-Latn".
|
||||
The default script for az on Unix is Latin. */
|
||||
{ "az-Latn", "az" },
|
||||
/* MacOS X has "ga-dots". Does not yet exist on Unix. */
|
||||
/* Mac OS X has "ga-dots". Does not yet exist on Unix. */
|
||||
{ "ga-dots", "ga" },
|
||||
/* MacOS X has "kk-Cyrl". Does not yet exist on Unix. */
|
||||
/* MacOS X has "mn-Cyrl", "mn-Mong".
|
||||
/* Mac OS X has "kk-Cyrl". Does not yet exist on Unix. */
|
||||
/* Mac OS X has "mn-Cyrl", "mn-Mong".
|
||||
The default script for mn on Unix is Cyrillic. */
|
||||
{ "mn-Cyrl", "mn" },
|
||||
/* MacOS X has "ms-Arab", "ms-Latn".
|
||||
/* Mac OS X has "ms-Arab", "ms-Latn".
|
||||
The default script for ms on Unix is Latin. */
|
||||
{ "ms-Latn", "ms" },
|
||||
/* MacOS X has "tg-Cyrl".
|
||||
/* Mac OS X has "tg-Cyrl".
|
||||
The default script for tg on Unix is Cyrillic. */
|
||||
{ "tg-Cyrl", "tg" },
|
||||
/* MacOS X has "tk-Cyrl". Does not yet exist on Unix. */
|
||||
/* MacOS X has "tt-Cyrl".
|
||||
/* Mac OS X has "tk-Cyrl". Does not yet exist on Unix. */
|
||||
/* Mac OS X has "tt-Cyrl".
|
||||
The default script for tt on Unix is Cyrillic. */
|
||||
{ "tt-Cyrl", "tt" },
|
||||
/* MacOS X has "zh-Hans", "zh-Hant".
|
||||
/* Mac OS X has "zh-Hans", "zh-Hant".
|
||||
Country codes are used to distinguish these on Unix. */
|
||||
{ "zh-Hans", "zh_CN" },
|
||||
{ "zh-Hant", "zh_TW" }
|
||||
@ -1407,11 +1412,11 @@ gl_locale_name_canonicalize (char *name)
|
||||
#endif
|
||||
|
||||
|
||||
#if defined WIN32_NATIVE || defined __CYGWIN__ /* WIN32 or Cygwin */
|
||||
#if defined WINDOWS_NATIVE || defined __CYGWIN__ /* Native Windows or Cygwin */
|
||||
|
||||
/* Canonicalize a Win32 native locale name to a Unix locale name.
|
||||
/* Canonicalize a Windows native locale name to a Unix locale name.
|
||||
NAME is a sufficiently large buffer.
|
||||
On input, it contains the Win32 locale name.
|
||||
On input, it contains the Windows locale name.
|
||||
On output, it contains the Unix locale name. */
|
||||
# if !defined IN_LIBINTL
|
||||
static
|
||||
@ -1467,9 +1472,9 @@ gl_locale_name_from_win32_LANGID (LANGID langid)
|
||||
}
|
||||
/* Internet Explorer has an LCID to RFC3066 name mapping stored in
|
||||
HKEY_CLASSES_ROOT\Mime\Database\Rfc1766. But we better don't use that
|
||||
since IE's i18n subsystem is known to be inconsistent with the Win32 base
|
||||
(e.g. they have different character conversion facilities that produce
|
||||
different results). */
|
||||
since IE's i18n subsystem is known to be inconsistent with the native
|
||||
Windows base (e.g. they have different character conversion facilities
|
||||
that produce different results). */
|
||||
/* Use our own table. */
|
||||
{
|
||||
int primary, sub;
|
||||
@ -2504,10 +2509,82 @@ gl_locale_name_from_win32_LCID (LCID lcid)
|
||||
return gl_locale_name_from_win32_LANGID (langid);
|
||||
}
|
||||
|
||||
# ifdef WINDOWS_NATIVE
|
||||
|
||||
/* Two variables to interface between get_lcid and the EnumLocales
|
||||
callback function below. */
|
||||
static LCID found_lcid;
|
||||
static char lname[LC_MAX * (LOCALE_NAME_MAX_LENGTH + 1) + 1];
|
||||
|
||||
/* Callback function for EnumLocales. */
|
||||
static BOOL CALLBACK
|
||||
enum_locales_fn (LPTSTR locale_num_str)
|
||||
{
|
||||
char *endp;
|
||||
char locval[2 * LOCALE_NAME_MAX_LENGTH + 1 + 1];
|
||||
LCID try_lcid = strtoul (locale_num_str, &endp, 16);
|
||||
|
||||
if (GetLocaleInfo (try_lcid, LOCALE_SENGLANGUAGE,
|
||||
locval, LOCALE_NAME_MAX_LENGTH))
|
||||
{
|
||||
strcat (locval, "_");
|
||||
if (GetLocaleInfo (try_lcid, LOCALE_SENGCOUNTRY,
|
||||
locval + strlen (locval), LOCALE_NAME_MAX_LENGTH))
|
||||
{
|
||||
size_t locval_len = strlen (locval);
|
||||
|
||||
if (strncmp (locval, lname, locval_len) == 0
|
||||
&& (lname[locval_len] == '.'
|
||||
|| lname[locval_len] == '\0'))
|
||||
{
|
||||
found_lcid = try_lcid;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* This lock protects the get_lcid against multiple simultaneous calls. */
|
||||
gl_lock_define_initialized(static, get_lcid_lock)
|
||||
|
||||
/* Return the Locale ID (LCID) number given the locale's name, a
|
||||
string, in LOCALE_NAME. This works by enumerating all the locales
|
||||
supported by the system, until we find one whose name matches
|
||||
LOCALE_NAME. */
|
||||
static LCID
|
||||
get_lcid (const char *locale_name)
|
||||
{
|
||||
/* A simple cache. */
|
||||
static LCID last_lcid;
|
||||
static char last_locale[1000];
|
||||
|
||||
/* Lock while looking for an LCID, to protect access to static
|
||||
variables: last_lcid, last_locale, found_lcid, and lname. */
|
||||
gl_lock_lock (get_lcid_lock);
|
||||
if (last_lcid > 0 && strcmp (locale_name, last_locale) == 0)
|
||||
{
|
||||
gl_lock_unlock (get_lcid_lock);
|
||||
return last_lcid;
|
||||
}
|
||||
strncpy (lname, locale_name, sizeof (lname) - 1);
|
||||
lname[sizeof (lname) - 1] = '\0';
|
||||
found_lcid = 0;
|
||||
EnumSystemLocales (enum_locales_fn, LCID_SUPPORTED);
|
||||
if (found_lcid > 0)
|
||||
{
|
||||
last_lcid = found_lcid;
|
||||
strcpy (last_locale, locale_name);
|
||||
}
|
||||
gl_lock_unlock (get_lcid_lock);
|
||||
return found_lcid;
|
||||
}
|
||||
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#if HAVE_USELOCALE /* glibc or MacOS X */
|
||||
#if HAVE_USELOCALE /* glibc or Mac OS X */
|
||||
|
||||
/* Simple hash set of strings. We don't want to drag in lots of hash table
|
||||
code here. */
|
||||
@ -2517,7 +2594,7 @@ gl_locale_name_from_win32_LCID (LCID lcid)
|
||||
/* A hash function for NUL-terminated char* strings using
|
||||
the method described by Bruno Haible.
|
||||
See http://www.haible.de/bruno/hashfunc.html. */
|
||||
static size_t
|
||||
static size_t _GL_ATTRIBUTE_PURE
|
||||
string_hash (const void *x)
|
||||
{
|
||||
const char *s = (const char *) x;
|
||||
@ -2607,7 +2684,7 @@ gl_locale_name_thread_unsafe (int category, const char *categoryname)
|
||||
locale_t thread_locale = uselocale (NULL);
|
||||
if (thread_locale != LC_GLOBAL_LOCALE)
|
||||
{
|
||||
# if __GLIBC__ >= 2 && !defined(__UCLIBC__)
|
||||
# if __GLIBC__ >= 2 && !defined __UCLIBC__
|
||||
/* Work around an incorrect definition of the _NL_LOCALE_NAME macro in
|
||||
glibc < 2.12.
|
||||
See <http://sourceware.org/bugzilla/show_bug.cgi?id=10968>. */
|
||||
@ -2618,133 +2695,34 @@ gl_locale_name_thread_unsafe (int category, const char *categoryname)
|
||||
nl_langinfo (_NL_LOCALE_NAME (category)). */
|
||||
name = thread_locale->__names[category];
|
||||
return name;
|
||||
# endif
|
||||
# if defined __APPLE__ && defined __MACH__ /* MacOS X */
|
||||
/* The locale name is found deep in an undocumented data structure.
|
||||
Since it's stored in a buffer of size 32 and newlocale() rejects
|
||||
locale names of length > 31, we can assume that it is NUL terminated
|
||||
in this buffer. But we need to make a copy of the locale name, of
|
||||
indefinite extent. */
|
||||
struct _xlocale_part1_v0 /* used in MacOS X 10.5 */
|
||||
{
|
||||
int32_t __refcount;
|
||||
void (*__free_extra)(void *);
|
||||
__darwin_mbstate_t __mbs[10];
|
||||
int64_t __magic;
|
||||
};
|
||||
struct _xlocale_part1_v1 /* used in MacOS X >= 10.6.0 */
|
||||
{
|
||||
int32_t __refcount;
|
||||
void (*__free_extra)(void *);
|
||||
__darwin_mbstate_t __mbs[10];
|
||||
/*pthread_lock_t*/ int __lock;
|
||||
int64_t __magic;
|
||||
};
|
||||
struct _xlocale_part2
|
||||
{
|
||||
int64_t __magic;
|
||||
unsigned char __collate_load_error;
|
||||
unsigned char __collate_substitute_nontrivial;
|
||||
unsigned char _messages_using_locale;
|
||||
unsigned char _monetary_using_locale;
|
||||
unsigned char _numeric_using_locale;
|
||||
unsigned char _time_using_locale;
|
||||
unsigned char __mlocale_changed;
|
||||
unsigned char __nlocale_changed;
|
||||
unsigned char __numeric_fp_cvt;
|
||||
struct __xlocale_st_collate *__lc_collate;
|
||||
struct __xlocale_st_runelocale *__lc_ctype;
|
||||
struct __xlocale_st_messages *__lc_messages;
|
||||
struct __xlocale_st_monetary *__lc_monetary;
|
||||
struct __xlocale_st_numeric *__lc_numeric;
|
||||
struct _xlocale *__lc_numeric_loc;
|
||||
struct __xlocale_st_time *__lc_time;
|
||||
/* more */
|
||||
};
|
||||
struct __xlocale_st_collate
|
||||
{
|
||||
int32_t __refcount;
|
||||
void (*__free_extra)(void *);
|
||||
char __encoding[32];
|
||||
/* more */
|
||||
};
|
||||
struct __xlocale_st_runelocale
|
||||
{
|
||||
int32_t __refcount;
|
||||
void (*__free_extra)(void *);
|
||||
char __ctype_encoding[32];
|
||||
/* more */
|
||||
};
|
||||
struct __xlocale_st_messages
|
||||
{
|
||||
int32_t __refcount;
|
||||
void (*__free_extra)(void *);
|
||||
char *_messages_locale_buf;
|
||||
/* more */
|
||||
};
|
||||
struct __xlocale_st_monetary
|
||||
{
|
||||
int32_t __refcount;
|
||||
void (*__free_extra)(void *);
|
||||
char *_monetary_locale_buf;
|
||||
/* more */
|
||||
};
|
||||
struct __xlocale_st_numeric {
|
||||
int32_t __refcount;
|
||||
void (*__free_extra)(void *);
|
||||
char *_numeric_locale_buf;
|
||||
/* more */
|
||||
};
|
||||
struct __xlocale_st_time {
|
||||
int32_t __refcount;
|
||||
void (*__free_extra)(void *);
|
||||
char *_time_locale_buf;
|
||||
/* more */
|
||||
};
|
||||
struct _xlocale_part2 *tlp;
|
||||
if (((struct _xlocale_part1_v0 *) thread_locale)->__magic
|
||||
== 0x786C6F63616C6530LL)
|
||||
/* MacOS X 10.5 */
|
||||
tlp =
|
||||
(struct _xlocale_part2 *)
|
||||
&((struct _xlocale_part1_v0 *) thread_locale)->__magic;
|
||||
else if (((struct _xlocale_part1_v1 *) thread_locale)->__magic
|
||||
== 0x786C6F63616C6530LL)
|
||||
/* MacOS X >= 10.6.0 */
|
||||
tlp =
|
||||
(struct _xlocale_part2 *)
|
||||
&((struct _xlocale_part1_v1 *) thread_locale)->__magic;
|
||||
else
|
||||
/* Unsupported version of MacOS X: The internals of 'struct _xlocale'
|
||||
have changed again. */
|
||||
return "";
|
||||
# elif defined __FreeBSD__ || (defined __APPLE__ && defined __MACH__)
|
||||
/* FreeBSD, Mac OS X */
|
||||
int mask;
|
||||
|
||||
switch (category)
|
||||
{
|
||||
case LC_CTYPE:
|
||||
return tlp->__lc_ctype->__ctype_encoding;
|
||||
mask = LC_CTYPE_MASK;
|
||||
break;
|
||||
case LC_NUMERIC:
|
||||
return tlp->_numeric_using_locale
|
||||
? tlp->__lc_numeric->_numeric_locale_buf
|
||||
: "C";
|
||||
mask = LC_NUMERIC_MASK;
|
||||
break;
|
||||
case LC_TIME:
|
||||
return tlp->_time_using_locale
|
||||
? tlp->__lc_time->_time_locale_buf
|
||||
: "C";
|
||||
mask = LC_TIME_MASK;
|
||||
break;
|
||||
case LC_COLLATE:
|
||||
return !tlp->__collate_load_error
|
||||
? tlp->__lc_collate->__encoding
|
||||
: "C";
|
||||
mask = LC_COLLATE_MASK;
|
||||
break;
|
||||
case LC_MONETARY:
|
||||
return tlp->_monetary_using_locale
|
||||
? tlp->__lc_monetary->_monetary_locale_buf
|
||||
: "C";
|
||||
mask = LC_MONETARY_MASK;
|
||||
break;
|
||||
case LC_MESSAGES:
|
||||
return tlp->_messages_using_locale
|
||||
? tlp->__lc_messages->_messages_locale_buf
|
||||
: "C";
|
||||
mask = LC_MESSAGES_MASK;
|
||||
break;
|
||||
default: /* We shouldn't get here. */
|
||||
return "";
|
||||
}
|
||||
return querylocale (mask, thread_locale);
|
||||
# endif
|
||||
}
|
||||
}
|
||||
@ -2761,6 +2739,27 @@ gl_locale_name_thread (int category, const char *categoryname)
|
||||
const char *name = gl_locale_name_thread_unsafe (category, categoryname);
|
||||
if (name != NULL)
|
||||
return struniq (name);
|
||||
#elif defined WINDOWS_NATIVE
|
||||
if (LC_MIN <= category && category <= LC_MAX)
|
||||
{
|
||||
char *locname = setlocale (category, NULL);
|
||||
LCID lcid = 0;
|
||||
|
||||
/* If CATEGORY is LC_ALL, the result might be a semi-colon
|
||||
separated list of locales. We need only one, so we take the
|
||||
one corresponding to LC_CTYPE, as the most important for
|
||||
character translations. */
|
||||
if (strchr (locname, ';'))
|
||||
locname = setlocale (LC_CTYPE, NULL);
|
||||
|
||||
/* Convert locale name to LCID. We don't want to use
|
||||
LocaleNameToLCID because (a) it is only available since Vista,
|
||||
and (b) it doesn't accept locale names returned by 'setlocale'. */
|
||||
lcid = get_lcid (locname);
|
||||
|
||||
if (lcid > 0)
|
||||
return gl_locale_name_from_win32_LCID (lcid);
|
||||
}
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
@ -2771,8 +2770,7 @@ gl_locale_name_thread (int category, const char *categoryname)
|
||||
However it does not specify the exact format. Neither do SUSV2 and
|
||||
ISO C 99. So we can use this feature only on selected systems (e.g.
|
||||
those using GNU C Library). */
|
||||
#if defined _LIBC || (defined __GLIBC__ && __GLIBC__ >= 2 \
|
||||
&& (!defined __UCLIBC__ || defined __UCLIBC_HAS_LOCALE__))
|
||||
#if defined _LIBC || ((defined __GLIBC__ && __GLIBC__ >= 2) && !defined __UCLIBC__)
|
||||
# define HAVE_LOCALE_NULL
|
||||
#endif
|
||||
|
||||
@ -2787,8 +2785,8 @@ gl_locale_name_posix (int category, const char *categoryname)
|
||||
/* On other systems we ignore what setlocale reports and instead look at the
|
||||
environment variables directly. This is necessary
|
||||
1. on systems which have a facility for customizing the default locale
|
||||
(MacOS X, native Windows, Cygwin) and where the system's setlocale()
|
||||
function ignores this default locale (MacOS X, Cygwin), in two cases:
|
||||
(Mac OS X, native Windows, Cygwin) and where the system's setlocale()
|
||||
function ignores this default locale (Mac OS X, Cygwin), in two cases:
|
||||
a. when the user missed to use the setlocale() override from libintl
|
||||
(for example by not including <libintl.h>),
|
||||
b. when setlocale supports only the "C" locale, such as on Cygwin
|
||||
@ -2823,7 +2821,7 @@ gl_locale_name_environ (int category, const char *categoryname)
|
||||
if (retval != NULL && retval[0] != '\0')
|
||||
{
|
||||
#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
|
||||
/* MacOS X 10.2 or newer.
|
||||
/* Mac OS X 10.2 or newer.
|
||||
Ignore invalid LANG value set by the Terminal application. */
|
||||
if (strcmp (retval, "UTF-8") != 0)
|
||||
#endif
|
||||
@ -2850,10 +2848,10 @@ gl_locale_name_default (void)
|
||||
locale, customizing it for each location. POSIX:2001 does not require
|
||||
such a facility.
|
||||
|
||||
The systems with such a facility are MacOS X and Windows: They provide a
|
||||
The systems with such a facility are Mac OS X and Windows: They provide a
|
||||
GUI that allows the user to choose a locale.
|
||||
- On MacOS X, by default, none of LC_* or LANG are set. Starting with
|
||||
MacOS X 10.4 or 10.5, LANG is set for processes launched by the
|
||||
- On Mac OS X, by default, none of LC_* or LANG are set. Starting with
|
||||
Mac OS X 10.4 or 10.5, LANG is set for processes launched by the
|
||||
'Terminal' application (but sometimes to an incorrect value "UTF-8").
|
||||
When no environment variable is set, setlocale (LC_ALL, "") uses the
|
||||
"C" locale.
|
||||
@ -2869,7 +2867,7 @@ gl_locale_name_default (void)
|
||||
"C.UTF-8" locale, which operates in the same way as the "C" locale.
|
||||
*/
|
||||
|
||||
#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE || defined WIN32_NATIVE || defined __CYGWIN__)
|
||||
#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE || defined WINDOWS_NATIVE || defined __CYGWIN__)
|
||||
|
||||
/* The system does not have a way of setting the locale, other than the
|
||||
POSIX specified environment variables. We use C as default locale. */
|
||||
@ -2883,7 +2881,7 @@ gl_locale_name_default (void)
|
||||
codeset. */
|
||||
|
||||
# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
|
||||
/* MacOS X 10.2 or newer */
|
||||
/* Mac OS X 10.2 or newer */
|
||||
{
|
||||
/* Cache the locale name, since CoreFoundation calls are expensive. */
|
||||
static const char *cached_localename;
|
||||
@ -2891,7 +2889,7 @@ gl_locale_name_default (void)
|
||||
if (cached_localename == NULL)
|
||||
{
|
||||
char namebuf[256];
|
||||
# if HAVE_CFLOCALECOPYCURRENT /* MacOS X 10.3 or newer */
|
||||
# if HAVE_CFLOCALECOPYCURRENT /* Mac OS X 10.3 or newer */
|
||||
CFLocaleRef locale = CFLocaleCopyCurrent ();
|
||||
CFStringRef name = CFLocaleGetIdentifier (locale);
|
||||
|
||||
@ -2902,7 +2900,7 @@ gl_locale_name_default (void)
|
||||
cached_localename = strdup (namebuf);
|
||||
}
|
||||
CFRelease (locale);
|
||||
# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */
|
||||
# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* Mac OS X 10.2 or newer */
|
||||
CFTypeRef value =
|
||||
CFPreferencesCopyAppValue (CFSTR ("AppleLocale"),
|
||||
kCFPreferencesCurrentApplication);
|
||||
@ -2924,11 +2922,11 @@ gl_locale_name_default (void)
|
||||
|
||||
# endif
|
||||
|
||||
# if defined WIN32_NATIVE || defined __CYGWIN__ /* WIN32 or Cygwin */
|
||||
# if defined WINDOWS_NATIVE || defined __CYGWIN__ /* Native Windows or Cygwin */
|
||||
{
|
||||
LCID lcid;
|
||||
|
||||
/* Use native Win32 API locale ID. */
|
||||
/* Use native Windows API locale ID. */
|
||||
lcid = GetThreadLocale ();
|
||||
|
||||
return gl_locale_name_from_win32_LCID (lcid);
|
||||
|
26
intl/lock.c
26
intl/lock.c
@ -1,20 +1,18 @@
|
||||
/* Locking in multithreaded situations.
|
||||
Copyright (C) 2005-2008 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Bruno Haible <bruno@clisp.org>, 2005.
|
||||
Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h,
|
||||
@ -631,7 +629,7 @@ glthread_once_singlethreaded (gl_once_t *once_control)
|
||||
|
||||
/* ========================================================================= */
|
||||
|
||||
#if USE_WIN32_THREADS
|
||||
#if USE_WINDOWS_THREADS
|
||||
|
||||
/* -------------------------- gl_lock_t datatype -------------------------- */
|
||||
|
||||
@ -684,7 +682,7 @@ glthread_lock_destroy_func (gl_lock_t *lock)
|
||||
/* In this file, the waitqueues are implemented as circular arrays. */
|
||||
#define gl_waitqueue_t gl_carray_waitqueue_t
|
||||
|
||||
static inline void
|
||||
static void
|
||||
gl_waitqueue_init (gl_waitqueue_t *wq)
|
||||
{
|
||||
wq->array = NULL;
|
||||
@ -745,7 +743,7 @@ gl_waitqueue_add (gl_waitqueue_t *wq)
|
||||
}
|
||||
|
||||
/* Notifies the first thread from a wait queue and dequeues it. */
|
||||
static inline void
|
||||
static void
|
||||
gl_waitqueue_notify_first (gl_waitqueue_t *wq)
|
||||
{
|
||||
SetEvent (wq->array[wq->offset + 0]);
|
||||
@ -756,7 +754,7 @@ gl_waitqueue_notify_first (gl_waitqueue_t *wq)
|
||||
}
|
||||
|
||||
/* Notifies all threads from a wait queue and dequeues them all. */
|
||||
static inline void
|
||||
static void
|
||||
gl_waitqueue_notify_all (gl_waitqueue_t *wq)
|
||||
{
|
||||
unsigned int i;
|
||||
|
33
intl/lock.h
33
intl/lock.h
@ -1,20 +1,18 @@
|
||||
/* Locking in multithreaded situations.
|
||||
Copyright (C) 2005-2008 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Bruno Haible <bruno@clisp.org>, 2005.
|
||||
Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h,
|
||||
@ -615,16 +613,17 @@ extern int glthread_once_singlethreaded (gl_once_t *once_control);
|
||||
|
||||
/* ========================================================================= */
|
||||
|
||||
#if USE_WIN32_THREADS
|
||||
#if USE_WINDOWS_THREADS
|
||||
|
||||
# define WIN32_LEAN_AND_MEAN /* avoid including junk */
|
||||
# include <windows.h>
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
/* We can use CRITICAL_SECTION directly, rather than the Win32 Event, Mutex,
|
||||
Semaphore types, because
|
||||
/* We can use CRITICAL_SECTION directly, rather than the native Windows Event,
|
||||
Mutex, Semaphore types, because
|
||||
- we need only to synchronize inside a single process (address space),
|
||||
not inter-process locking,
|
||||
- we don't need to support trylock operations. (TryEnterCriticalSection
|
||||
@ -710,9 +709,9 @@ extern int glthread_rwlock_destroy_func (gl_rwlock_t *lock);
|
||||
|
||||
/* --------------------- gl_recursive_lock_t datatype --------------------- */
|
||||
|
||||
/* The Win32 documentation says that CRITICAL_SECTION already implements a
|
||||
recursive lock. But we need not rely on it: It's easy to implement a
|
||||
recursive lock without this assumption. */
|
||||
/* The native Windows documentation says that CRITICAL_SECTION already
|
||||
implements a recursive lock. But we need not rely on it: It's easy to
|
||||
implement a recursive lock without this assumption. */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@ -764,7 +763,7 @@ extern void glthread_once_func (gl_once_t *once_control, void (*initfunction) (v
|
||||
|
||||
/* ========================================================================= */
|
||||
|
||||
#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WIN32_THREADS)
|
||||
#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WINDOWS_THREADS)
|
||||
|
||||
/* Provide dummy implementation if threads are not supported. */
|
||||
|
||||
|
18
intl/log.c
18
intl/log.c
@ -1,20 +1,18 @@
|
||||
/* Log file output.
|
||||
Copyright (C) 2003, 2005, 2009 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Bruno Haible <bruno@clisp.org>. */
|
||||
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Implementation of ngettext(3) function.
|
||||
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
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* OS/2 compatibility functions.
|
||||
Copyright (C) 2001-2002 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define OS2_AWARE
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -2,20 +2,18 @@
|
||||
This file is intended to be included from config.h
|
||||
Copyright (C) 2001-2002 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* When included from os2compat.h we need all the original definitions */
|
||||
#ifndef OS2_AWARE
|
||||
|
20
intl/osdep.c
20
intl/osdep.c
@ -1,22 +1,20 @@
|
||||
/* OS dependent parts of libintl.
|
||||
Copyright (C) 2001-2002, 2006 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#if defined __CYGWIN__
|
||||
#if defined __CYGWIN__ || defined __MINGW32__
|
||||
# include "intl-exports.c"
|
||||
#elif defined __EMX__
|
||||
# include "os2compat.c"
|
||||
|
@ -2,20 +2,18 @@
|
||||
Copyright (C) 2000-2001, 2003, 2005-2007 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
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -2,20 +2,18 @@
|
||||
Copyright (C) 2000-2003, 2005-2007 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
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _PLURAL_EXP_H
|
||||
#define _PLURAL_EXP_H
|
||||
@ -109,7 +107,7 @@ struct parse_args
|
||||
|
||||
extern void FREE_EXPRESSION (struct expression *exp)
|
||||
internal_function;
|
||||
extern int PLURAL_PARSE (void *arg);
|
||||
extern int PLURAL_PARSE (struct parse_args *arg);
|
||||
extern struct expression GERMANIC_PLURAL attribute_hidden;
|
||||
extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry,
|
||||
const struct expression **pluralp,
|
||||
|
901
intl/plural.c
901
intl/plural.c
File diff suppressed because it is too large
Load Diff
@ -3,20 +3,18 @@
|
||||
Copyright (C) 2000-2001, 2003, 2005-2006 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
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us
|
||||
to put this declaration at the beginning of the file. The declaration in
|
||||
@ -42,10 +40,10 @@
|
||||
# define __gettextparse PLURAL_PARSE
|
||||
#endif
|
||||
|
||||
#define YYLEX_PARAM &((struct parse_args *) arg)->cp
|
||||
#define YYPARSE_PARAM arg
|
||||
%}
|
||||
%pure_parser
|
||||
%parse-param {struct parse_args *arg}
|
||||
%lex-param {struct parse_args *arg}
|
||||
%define api.pure full
|
||||
%expect 7
|
||||
|
||||
%union {
|
||||
@ -56,8 +54,8 @@
|
||||
|
||||
%{
|
||||
/* Prototypes for local functions. */
|
||||
static int yylex (YYSTYPE *lval, const char **pexp);
|
||||
static void yyerror (const char *str);
|
||||
static int yylex (YYSTYPE *lval, struct parse_args *arg);
|
||||
static void yyerror (struct parse_args *arg, const char *str);
|
||||
|
||||
/* Allocation of expressions. */
|
||||
|
||||
@ -155,7 +153,7 @@ start: exp
|
||||
{
|
||||
if ($1 == NULL)
|
||||
YYABORT;
|
||||
((struct parse_args *) arg)->res = $1;
|
||||
arg->res = $1;
|
||||
}
|
||||
;
|
||||
|
||||
@ -236,16 +234,16 @@ FREE_EXPRESSION (struct expression *exp)
|
||||
|
||||
|
||||
static int
|
||||
yylex (YYSTYPE *lval, const char **pexp)
|
||||
yylex (YYSTYPE *lval, struct parse_args *arg)
|
||||
{
|
||||
const char *exp = *pexp;
|
||||
const char *exp = arg->cp;
|
||||
int result;
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (exp[0] == '\0')
|
||||
{
|
||||
*pexp = exp;
|
||||
arg->cp = exp;
|
||||
return YYEOF;
|
||||
}
|
||||
|
||||
@ -372,14 +370,14 @@ yylex (YYSTYPE *lval, const char **pexp)
|
||||
break;
|
||||
}
|
||||
|
||||
*pexp = exp;
|
||||
arg->cp = exp;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
yyerror (const char *str)
|
||||
yyerror (struct parse_args *arg, const char *str)
|
||||
{
|
||||
/* Do nothing. We don't print error messages here. */
|
||||
}
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Decomposed printf argument list.
|
||||
Copyright (C) 1999, 2002-2003, 2005-2007 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This file can be parametrized with the following macros:
|
||||
ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions.
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Decomposed printf argument list.
|
||||
Copyright (C) 1999, 2002-2003, 2006-2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2002-2003, 2006-2007, 2011 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _PRINTF_ARGS_H
|
||||
#define _PRINTF_ARGS_H
|
||||
@ -136,10 +134,14 @@ typedef struct
|
||||
}
|
||||
argument;
|
||||
|
||||
/* Number of directly allocated arguments (no malloc() needed). */
|
||||
#define N_DIRECT_ALLOC_ARGUMENTS 7
|
||||
|
||||
typedef struct
|
||||
{
|
||||
size_t count;
|
||||
argument *arg;
|
||||
argument direct_alloc_arg[N_DIRECT_ALLOC_ARGUMENTS];
|
||||
}
|
||||
arguments;
|
||||
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Formatted output to strings.
|
||||
Copyright (C) 1999-2000, 2002-2003, 2006-2008 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999-2000, 2002-2003, 2006-2008, 2011 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This file can be parametrized with the following macros:
|
||||
CHAR_T The element type of the format string.
|
||||
@ -64,6 +62,9 @@
|
||||
/* malloc(), realloc(), free(). */
|
||||
#include <stdlib.h>
|
||||
|
||||
/* memcpy(). */
|
||||
#include <string.h>
|
||||
|
||||
/* errno. */
|
||||
#include <errno.h>
|
||||
|
||||
@ -81,23 +82,20 @@ STATIC
|
||||
int
|
||||
PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||||
{
|
||||
const CHAR_T *cp = format; /* pointer into format */
|
||||
const CHAR_T *cp = format; /* pointer into format */
|
||||
size_t arg_posn = 0; /* number of regular arguments consumed */
|
||||
size_t d_allocated; /* allocated elements of d->dir */
|
||||
size_t a_allocated; /* allocated elements of a->arg */
|
||||
size_t d_allocated; /* allocated elements of d->dir */
|
||||
size_t a_allocated; /* allocated elements of a->arg */
|
||||
size_t max_width_length = 0;
|
||||
size_t max_precision_length = 0;
|
||||
|
||||
d->count = 0;
|
||||
d_allocated = 1;
|
||||
d->dir = (DIRECTIVE *) malloc (d_allocated * sizeof (DIRECTIVE));
|
||||
if (d->dir == NULL)
|
||||
/* Out of memory. */
|
||||
goto out_of_memory_1;
|
||||
d_allocated = N_DIRECT_ALLOC_DIRECTIVES;
|
||||
d->dir = d->direct_alloc_dir;
|
||||
|
||||
a->count = 0;
|
||||
a_allocated = 0;
|
||||
a->arg = NULL;
|
||||
a_allocated = N_DIRECT_ALLOC_ARGUMENTS;
|
||||
a->arg = a->direct_alloc_arg;
|
||||
|
||||
#define REGISTER_ARG(_index_,_type_) \
|
||||
{ \
|
||||
@ -114,12 +112,14 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||||
if (size_overflow_p (memory_size)) \
|
||||
/* Overflow, would lead to out of memory. */ \
|
||||
goto out_of_memory; \
|
||||
memory = (argument *) (a->arg \
|
||||
memory = (argument *) (a->arg != a->direct_alloc_arg \
|
||||
? realloc (a->arg, memory_size) \
|
||||
: malloc (memory_size)); \
|
||||
if (memory == NULL) \
|
||||
/* Out of memory. */ \
|
||||
goto out_of_memory; \
|
||||
if (a->arg == a->direct_alloc_arg) \
|
||||
memcpy (memory, a->arg, a->count * sizeof (argument)); \
|
||||
a->arg = memory; \
|
||||
} \
|
||||
while (a->count <= n) \
|
||||
@ -207,6 +207,13 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||||
dp->flags |= FLAG_ZERO;
|
||||
cp++;
|
||||
}
|
||||
#if __GLIBC__ >= 2 && !defined __UCLIBC__
|
||||
else if (*cp == 'I')
|
||||
{
|
||||
dp->flags |= FLAG_LOCALIZED;
|
||||
cp++;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
break;
|
||||
}
|
||||
@ -582,10 +589,14 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||||
if (size_overflow_p (memory_size))
|
||||
/* Overflow, would lead to out of memory. */
|
||||
goto out_of_memory;
|
||||
memory = (DIRECTIVE *) realloc (d->dir, memory_size);
|
||||
memory = (DIRECTIVE *) (d->dir != d->direct_alloc_dir
|
||||
? realloc (d->dir, memory_size)
|
||||
: malloc (memory_size));
|
||||
if (memory == NULL)
|
||||
/* Out of memory. */
|
||||
goto out_of_memory;
|
||||
if (d->dir == d->direct_alloc_dir)
|
||||
memcpy (memory, d->dir, d->count * sizeof (DIRECTIVE));
|
||||
d->dir = memory;
|
||||
}
|
||||
}
|
||||
@ -604,19 +615,18 @@ PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
|
||||
return 0;
|
||||
|
||||
error:
|
||||
if (a->arg)
|
||||
if (a->arg != a->direct_alloc_arg)
|
||||
free (a->arg);
|
||||
if (d->dir)
|
||||
if (d->dir != d->direct_alloc_dir)
|
||||
free (d->dir);
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
|
||||
out_of_memory:
|
||||
if (a->arg)
|
||||
if (a->arg != a->direct_alloc_arg)
|
||||
free (a->arg);
|
||||
if (d->dir)
|
||||
if (d->dir != d->direct_alloc_dir)
|
||||
free (d->dir);
|
||||
out_of_memory_1:
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
}
|
||||
|
@ -1,24 +1,26 @@
|
||||
/* Parse printf format string.
|
||||
Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2011 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _PRINTF_PARSE_H
|
||||
#define _PRINTF_PARSE_H
|
||||
|
||||
#if HAVE_FEATURES_H
|
||||
# include <features.h> /* for __GLIBC__, __UCLIBC__ */
|
||||
#endif
|
||||
|
||||
#include "printf-args.h"
|
||||
|
||||
|
||||
@ -29,10 +31,16 @@
|
||||
#define FLAG_SPACE 8 /* space flag */
|
||||
#define FLAG_ALT 16 /* # flag */
|
||||
#define FLAG_ZERO 32
|
||||
#if __GLIBC__ >= 2 && !defined __UCLIBC__
|
||||
# define FLAG_LOCALIZED 64 /* I flag, uses localized digits */
|
||||
#endif
|
||||
|
||||
/* arg_index value indicating that no argument is consumed. */
|
||||
#define ARG_NONE (~(size_t)0)
|
||||
|
||||
/* Number of directly allocated directives (no malloc() needed). */
|
||||
#define N_DIRECT_ALLOC_DIRECTIVES 7
|
||||
|
||||
/* A parsed directive. */
|
||||
typedef struct
|
||||
{
|
||||
@ -57,6 +65,7 @@ typedef struct
|
||||
char_directive *dir;
|
||||
size_t max_width_length;
|
||||
size_t max_precision_length;
|
||||
char_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
|
||||
}
|
||||
char_directives;
|
||||
|
||||
|
@ -1,21 +1,19 @@
|
||||
/* Formatted output to strings, using POSIX/XSI format strings with positions.
|
||||
Copyright (C) 2003, 2006-2007, 2009 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2006-2007, 2009-2011 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
@ -70,7 +68,7 @@ char *alloca ();
|
||||
|
||||
#define STATIC static
|
||||
|
||||
/* This needs to be consistent with libgnuintl.h.in. */
|
||||
/* This needs to be consistent with libgnuintl.in.h. */
|
||||
#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__
|
||||
/* Don't break __attribute__((format(printf,M,N))).
|
||||
This redefinition is only possible because the libc in NetBSD, Cygwin,
|
||||
@ -193,8 +191,13 @@ libintl_sprintf (char *resultbuf, const char *format, ...)
|
||||
#if HAVE_SNPRINTF
|
||||
|
||||
# if HAVE_DECL__SNPRINTF
|
||||
/* Windows. */
|
||||
# define system_vsnprintf _vsnprintf
|
||||
/* Windows. The mingw function vsnprintf() has fewer bugs than the MSVCRT
|
||||
function _vsnprintf(), so prefer that. */
|
||||
# if defined __MINGW32__
|
||||
# define system_vsnprintf vsnprintf
|
||||
# else
|
||||
# define system_vsnprintf _vsnprintf
|
||||
# endif
|
||||
# else
|
||||
/* Unix. */
|
||||
# define system_vsnprintf vsnprintf
|
||||
@ -210,6 +213,8 @@ libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list a
|
||||
{
|
||||
size_t maxlength = length;
|
||||
char *result = libintl_vasnprintf (resultbuf, &length, format, args);
|
||||
if (result == NULL)
|
||||
return -1;
|
||||
if (result != resultbuf)
|
||||
{
|
||||
if (maxlength > 0)
|
||||
@ -304,7 +309,8 @@ libintl_asprintf (char **resultp, const char *format, ...)
|
||||
#endif
|
||||
|
||||
# if HAVE_DECL__SNWPRINTF
|
||||
/* Windows. */
|
||||
/* Windows. The function vswprintf() has a different signature than
|
||||
on Unix; we use the function _vsnwprintf() instead. */
|
||||
# define system_vswprintf _vsnwprintf
|
||||
# else
|
||||
/* Unix. */
|
||||
@ -384,6 +390,8 @@ libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_
|
||||
{
|
||||
size_t maxlength = length;
|
||||
wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args);
|
||||
if (result == NULL)
|
||||
return -1;
|
||||
if (result != resultbuf)
|
||||
{
|
||||
if (maxlength > 0)
|
||||
|
@ -2,20 +2,18 @@
|
||||
#
|
||||
# Copyright (C) 2000 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 free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# 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.
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
# USA.
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Written by Bruno Haible <haible@clisp.cons.org>.
|
||||
#
|
||||
|
@ -2,20 +2,18 @@
|
||||
#
|
||||
# Copyright (C) 2000 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 free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# 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.
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
# USA.
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Written by Bruno Haible <haible@clisp.cons.org>.
|
||||
#
|
||||
|
@ -1,21 +1,19 @@
|
||||
/* Provide relocatable packages.
|
||||
Copyright (C) 2003-2006, 2008-2009 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003-2006, 2008-2011 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
|
||||
/* Tell glibc's <stdio.h> to provide a prototype for getline().
|
||||
@ -25,6 +23,7 @@
|
||||
# define _GNU_SOURCE 1
|
||||
#endif
|
||||
|
||||
#define _GL_USE_STDLIB_ALLOC 1
|
||||
#include <config.h>
|
||||
|
||||
/* Specification. */
|
||||
@ -43,7 +42,7 @@
|
||||
# include "xalloc.h"
|
||||
#endif
|
||||
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
|
||||
#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
#endif
|
||||
@ -70,8 +69,8 @@
|
||||
ISSLASH(C) tests whether C is a directory separator character.
|
||||
IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
|
||||
*/
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
|
||||
/* Win32, Cygwin, OS/2, DOS */
|
||||
#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
|
||||
/* Native Windows, OS/2, DOS */
|
||||
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
|
||||
# define HAS_DEVICE(P) \
|
||||
((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
|
||||
@ -86,6 +85,19 @@
|
||||
# define FILE_SYSTEM_PREFIX_LEN(P) 0
|
||||
#endif
|
||||
|
||||
/* Whether to enable the more costly support for relocatable libraries.
|
||||
It allows libraries to be have been installed with a different original
|
||||
prefix than the program. But it is quite costly, especially on Cygwin
|
||||
platforms, see below. Therefore we enable it by default only on native
|
||||
Windows platforms. */
|
||||
#ifndef ENABLE_COSTLY_RELOCATABLE
|
||||
# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
|
||||
# define ENABLE_COSTLY_RELOCATABLE 1
|
||||
# else
|
||||
# define ENABLE_COSTLY_RELOCATABLE 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Original installation prefix. */
|
||||
static char *orig_prefix;
|
||||
static size_t orig_prefix_len;
|
||||
@ -155,7 +167,7 @@ set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg)
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
|
||||
#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE)
|
||||
|
||||
/* Convenience function:
|
||||
Computes the current installation prefix, based on the original
|
||||
@ -237,7 +249,7 @@ compute_curr_prefix (const char *orig_installprefix,
|
||||
often case-insensitive. It's better to accept the comparison
|
||||
if the difference is only in case, rather than to fail. */
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
|
||||
/* Win32, Cygwin, OS/2, DOS - case insignificant file system */
|
||||
/* Native Windows, Cygwin, OS/2, DOS - case insignificant file system */
|
||||
if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi)
|
||||
!= (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi))
|
||||
break;
|
||||
@ -285,12 +297,17 @@ compute_curr_prefix (const char *orig_installprefix,
|
||||
|
||||
#endif /* !IN_LIBRARY || PIC */
|
||||
|
||||
#if defined PIC && defined INSTALLDIR
|
||||
#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
|
||||
|
||||
/* Full pathname of shared library, or NULL. */
|
||||
static char *shared_library_fullname;
|
||||
|
||||
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__
|
||||
#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
|
||||
/* Native Windows only.
|
||||
On Cygwin, it is better to use the Cygwin provided /proc interface, than
|
||||
to use native Windows API and cygwin_conv_to_posix_path, because it
|
||||
supports longer file names
|
||||
(see <http://cygwin.com/ml/cygwin/2011-01/msg00410.html>). */
|
||||
|
||||
/* Determine the full pathname of the shared library when it is loaded. */
|
||||
|
||||
@ -312,37 +329,23 @@ DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved)
|
||||
/* Shouldn't happen. */
|
||||
return FALSE;
|
||||
|
||||
{
|
||||
#if defined __CYGWIN__
|
||||
/* On Cygwin, we need to convert paths coming from Win32 system calls
|
||||
to the Unix-like slashified notation. */
|
||||
static char location_as_posix_path[2 * MAX_PATH];
|
||||
/* There's no error return defined for cygwin_conv_to_posix_path.
|
||||
See cygwin-api/func-cygwin-conv-to-posix-path.html.
|
||||
Does it overflow the buffer of expected size MAX_PATH or does it
|
||||
truncate the path? I don't know. Let's catch both. */
|
||||
cygwin_conv_to_posix_path (location, location_as_posix_path);
|
||||
location_as_posix_path[MAX_PATH - 1] = '\0';
|
||||
if (strlen (location_as_posix_path) >= MAX_PATH - 1)
|
||||
/* A sign of buffer overflow or path truncation. */
|
||||
return FALSE;
|
||||
shared_library_fullname = strdup (location_as_posix_path);
|
||||
#else
|
||||
shared_library_fullname = strdup (location);
|
||||
#endif
|
||||
}
|
||||
shared_library_fullname = strdup (location);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#else /* Unix except Cygwin */
|
||||
#else /* Unix */
|
||||
|
||||
static void
|
||||
find_shared_library_fullname ()
|
||||
{
|
||||
#if defined __linux__ && __GLIBC__ >= 2
|
||||
/* Linux has /proc/self/maps. glibc 2 has the getline() function. */
|
||||
#if (defined __linux__ && (__GLIBC__ >= 2 || defined __UCLIBC__)) || defined __CYGWIN__
|
||||
/* Linux has /proc/self/maps. glibc 2 and uClibc have the getline()
|
||||
function.
|
||||
Cygwin >= 1.5 has /proc/self/maps and the getline() function too.
|
||||
But it is costly: ca. 0.3 ms on Linux, 3 ms on Cygwin 1.5, and 5 ms on
|
||||
Cygwin 1.7. */
|
||||
FILE *fp;
|
||||
|
||||
/* Open the current process' maps file. It describes one VMA per line. */
|
||||
@ -387,15 +390,15 @@ find_shared_library_fullname ()
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */
|
||||
#endif /* Native Windows / Unix */
|
||||
|
||||
/* Return the full pathname of the current shared library.
|
||||
Return NULL if unknown.
|
||||
Guaranteed to work only on Linux, Cygwin and Woe32. */
|
||||
Guaranteed to work only on Linux, Cygwin, and native Windows. */
|
||||
static char *
|
||||
get_shared_library_fullname ()
|
||||
{
|
||||
#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__)
|
||||
#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
|
||||
static bool tried_find_shared_library_fullname;
|
||||
if (!tried_find_shared_library_fullname)
|
||||
{
|
||||
@ -415,7 +418,7 @@ get_shared_library_fullname ()
|
||||
const char *
|
||||
relocate (const char *pathname)
|
||||
{
|
||||
#if defined PIC && defined INSTALLDIR
|
||||
#if defined PIC && defined INSTALLDIR && ENABLE_COSTLY_RELOCATABLE
|
||||
static int initialized;
|
||||
|
||||
/* Initialization code for a shared library. */
|
||||
|
@ -2,20 +2,18 @@
|
||||
Copyright (C) 2003, 2005, 2008 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2003.
|
||||
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _RELOCATABLE_H
|
||||
#define _RELOCATABLE_H
|
||||
|
@ -2,20 +2,18 @@
|
||||
Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2009.
|
||||
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
@ -856,6 +854,14 @@ libintl_setlocale (int category, const char *locale)
|
||||
|
||||
if (setlocale_unixlike (LC_ALL, base_name) == NULL)
|
||||
goto fail;
|
||||
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||||
/* On native Windows, setlocale(LC_ALL,...) may succeed but set the
|
||||
LC_CTYPE category to an invalid value ("C") when it does not
|
||||
support the specified encoding. Report a failure instead. */
|
||||
if (strchr (base_name, '.') != NULL
|
||||
&& strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
|
||||
goto fail;
|
||||
# endif
|
||||
|
||||
for (i = 0; i < sizeof (categories) / sizeof (categories[0]); i++)
|
||||
{
|
||||
@ -878,6 +884,7 @@ libintl_setlocale (int category, const char *locale)
|
||||
}
|
||||
|
||||
/* All steps were successful. */
|
||||
++_nl_msg_cat_cntr;
|
||||
free (saved_locale);
|
||||
return setlocale (LC_ALL, NULL);
|
||||
|
||||
@ -889,16 +896,64 @@ libintl_setlocale (int category, const char *locale)
|
||||
}
|
||||
else
|
||||
{
|
||||
char *result;
|
||||
const char *name =
|
||||
gl_locale_name_environ (category, category_to_name (category));
|
||||
if (name == NULL)
|
||||
name = gl_locale_name_default ();
|
||||
|
||||
return setlocale_single (category, name);
|
||||
result = setlocale_single (category, name);
|
||||
if (result != NULL)
|
||||
++_nl_msg_cat_cntr;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
else
|
||||
return setlocale_single (category, locale);
|
||||
{
|
||||
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||||
if (category == LC_ALL && locale != NULL && strchr (locale, '.') != NULL)
|
||||
{
|
||||
char *saved_locale;
|
||||
|
||||
/* Back up the old locale. */
|
||||
saved_locale = setlocale (LC_ALL, NULL);
|
||||
if (saved_locale == NULL)
|
||||
return NULL;
|
||||
saved_locale = strdup (saved_locale);
|
||||
if (saved_locale == NULL)
|
||||
return NULL;
|
||||
|
||||
if (setlocale_unixlike (LC_ALL, locale) == NULL)
|
||||
{
|
||||
free (saved_locale);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* On native Windows, setlocale(LC_ALL,...) may succeed but set the
|
||||
LC_CTYPE category to an invalid value ("C") when it does not
|
||||
support the specified encoding. Report a failure instead. */
|
||||
if (strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
|
||||
{
|
||||
if (saved_locale[0] != '\0') /* don't risk an endless recursion */
|
||||
setlocale (LC_ALL, saved_locale);
|
||||
free (saved_locale);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* It was really successful. */
|
||||
++_nl_msg_cat_cntr;
|
||||
free (saved_locale);
|
||||
return setlocale (LC_ALL, NULL);
|
||||
}
|
||||
else
|
||||
# endif
|
||||
{
|
||||
char *result = setlocale_single (category, locale);
|
||||
if (result != NULL)
|
||||
++_nl_msg_cat_cntr;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# if HAVE_NEWLOCALE
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Implementation of the textdomain(3) function.
|
||||
Copyright (C) 1995-1998, 2000-2003, 2005-2006 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Multithreading primitives.
|
||||
Copyright (C) 2005-2009 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Bruno Haible <bruno@clisp.org>, 2005. */
|
||||
|
||||
|
@ -4,20 +4,18 @@
|
||||
NOTE: The canonical source of this file is maintained with the GNU C
|
||||
Library. Bugs can be reported to bug-glibc@gnu.org.
|
||||
|
||||
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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Tree search for red/black trees.
|
||||
The algorithm for adding nodes is taken from one of the many "Algorithms"
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* Binary tree data structure.
|
||||
Copyright (C) 2006 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _TSEARCH_H
|
||||
#define _TSEARCH_H
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* vsprintf with automatic memory allocation.
|
||||
Copyright (C) 1999, 2002-2010 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2002-2012 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This file can be parametrized with the following macros:
|
||||
VASNPRINTF The name of the function being defined.
|
||||
@ -89,6 +87,8 @@
|
||||
/* Checked size_t computations. */
|
||||
#include "xsize.h"
|
||||
|
||||
#include "verify.h"
|
||||
|
||||
#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
|
||||
# include <math.h>
|
||||
# include "float+.h"
|
||||
@ -275,10 +275,10 @@ decimal_point_char (void)
|
||||
{
|
||||
const char *point;
|
||||
/* Determine it in a multithread-safe way. We know nl_langinfo is
|
||||
multithread-safe on glibc systems and MacOS X systems, but is not required
|
||||
multithread-safe on glibc systems and Mac OS X systems, but is not required
|
||||
to be multithread-safe by POSIX. sprintf(), however, is multithread-safe.
|
||||
localeconv() is rarely multithread-safe. */
|
||||
# if HAVE_NL_LANGINFO && (__GLIBC__ || (defined __APPLE__ && defined __MACH__))
|
||||
# if HAVE_NL_LANGINFO && (__GLIBC__ || defined __UCLIBC__ || (defined __APPLE__ && defined __MACH__))
|
||||
point = nl_langinfo (RADIXCHAR);
|
||||
# elif 1
|
||||
char pointbuf[5];
|
||||
@ -323,11 +323,11 @@ is_infinite_or_zerol (long double x)
|
||||
|
||||
typedef unsigned int mp_limb_t;
|
||||
# define GMP_LIMB_BITS 32
|
||||
typedef int mp_limb_verify[2 * (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS) - 1];
|
||||
verify (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS);
|
||||
|
||||
typedef unsigned long long mp_twolimb_t;
|
||||
# define GMP_TWOLIMB_BITS 64
|
||||
typedef int mp_twolimb_verify[2 * (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS) - 1];
|
||||
verify (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS);
|
||||
|
||||
/* Representation of a bignum >= 0. */
|
||||
typedef struct
|
||||
@ -552,32 +552,61 @@ divide (mpn_t a, mpn_t b, mpn_t *q)
|
||||
size_t s;
|
||||
{
|
||||
mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */
|
||||
s = 31;
|
||||
if (msd >= 0x10000)
|
||||
/* Determine s = GMP_LIMB_BITS - integer_length (msd).
|
||||
Code copied from gnulib's integer_length.c. */
|
||||
# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
|
||||
s = __builtin_clz (msd);
|
||||
# else
|
||||
# if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT
|
||||
if (GMP_LIMB_BITS <= DBL_MANT_BIT)
|
||||
{
|
||||
msd = msd >> 16;
|
||||
s -= 16;
|
||||
/* Use 'double' operations.
|
||||
Assumes an IEEE 754 'double' implementation. */
|
||||
# define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7)
|
||||
# define DBL_EXP_BIAS (DBL_EXP_MASK / 2 - 1)
|
||||
# define NWORDS \
|
||||
((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
|
||||
union { double value; unsigned int word[NWORDS]; } m;
|
||||
|
||||
/* Use a single integer to floating-point conversion. */
|
||||
m.value = msd;
|
||||
|
||||
s = GMP_LIMB_BITS
|
||||
- (((m.word[DBL_EXPBIT0_WORD] >> DBL_EXPBIT0_BIT) & DBL_EXP_MASK)
|
||||
- DBL_EXP_BIAS);
|
||||
}
|
||||
if (msd >= 0x100)
|
||||
else
|
||||
# undef NWORDS
|
||||
# endif
|
||||
{
|
||||
msd = msd >> 8;
|
||||
s -= 8;
|
||||
}
|
||||
if (msd >= 0x10)
|
||||
{
|
||||
msd = msd >> 4;
|
||||
s -= 4;
|
||||
}
|
||||
if (msd >= 0x4)
|
||||
{
|
||||
msd = msd >> 2;
|
||||
s -= 2;
|
||||
}
|
||||
if (msd >= 0x2)
|
||||
{
|
||||
msd = msd >> 1;
|
||||
s -= 1;
|
||||
s = 31;
|
||||
if (msd >= 0x10000)
|
||||
{
|
||||
msd = msd >> 16;
|
||||
s -= 16;
|
||||
}
|
||||
if (msd >= 0x100)
|
||||
{
|
||||
msd = msd >> 8;
|
||||
s -= 8;
|
||||
}
|
||||
if (msd >= 0x10)
|
||||
{
|
||||
msd = msd >> 4;
|
||||
s -= 4;
|
||||
}
|
||||
if (msd >= 0x4)
|
||||
{
|
||||
msd = msd >> 2;
|
||||
s -= 2;
|
||||
}
|
||||
if (msd >= 0x2)
|
||||
{
|
||||
msd = msd >> 1;
|
||||
s -= 1;
|
||||
}
|
||||
}
|
||||
# endif
|
||||
}
|
||||
/* 0 <= s < GMP_LIMB_BITS.
|
||||
Copy b, shifting it left by s bits. */
|
||||
@ -884,9 +913,9 @@ decode_long_double (long double x, int *ep, mpn_t *mp)
|
||||
y = frexpl (x, &exp);
|
||||
if (!(y >= 0.0L && y < 1.0L))
|
||||
abort ();
|
||||
/* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * LDBL_MANT_BIT), and the
|
||||
/* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * 2^LDBL_MANT_BIT), and the
|
||||
latter is an integer. */
|
||||
/* Convert the mantissa (y * LDBL_MANT_BIT) to a sequence of limbs.
|
||||
/* Convert the mantissa (y * 2^LDBL_MANT_BIT) to a sequence of limbs.
|
||||
I'm not sure whether it's safe to cast a 'long double' value between
|
||||
2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
|
||||
'long double' values between 0 and 2^16 (to 'unsigned int' or 'int',
|
||||
@ -934,11 +963,11 @@ decode_long_double (long double x, int *ep, mpn_t *mp)
|
||||
abort ();
|
||||
m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo;
|
||||
}
|
||||
#if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess
|
||||
precision. */
|
||||
# if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess
|
||||
precision. */
|
||||
if (!(y == 0.0L))
|
||||
abort ();
|
||||
#endif
|
||||
# endif
|
||||
/* Normalise. */
|
||||
while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0)
|
||||
m.nlimbs--;
|
||||
@ -972,9 +1001,9 @@ decode_double (double x, int *ep, mpn_t *mp)
|
||||
y = frexp (x, &exp);
|
||||
if (!(y >= 0.0 && y < 1.0))
|
||||
abort ();
|
||||
/* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * DBL_MANT_BIT), and the
|
||||
/* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * 2^DBL_MANT_BIT), and the
|
||||
latter is an integer. */
|
||||
/* Convert the mantissa (y * DBL_MANT_BIT) to a sequence of limbs.
|
||||
/* Convert the mantissa (y * 2^DBL_MANT_BIT) to a sequence of limbs.
|
||||
I'm not sure whether it's safe to cast a 'double' value between
|
||||
2^31 and 2^32 to 'unsigned int', therefore play safe and cast only
|
||||
'double' values between 0 and 2^16 (to 'unsigned int' or 'int',
|
||||
@ -1501,7 +1530,7 @@ is_borderline (const char *digits, size_t precision)
|
||||
|
||||
/* Returns the number of TCHAR_T units needed as temporary space for the result
|
||||
of sprintf or SNPRINTF of a single conversion directive. */
|
||||
static inline size_t
|
||||
static size_t
|
||||
MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion,
|
||||
arg_type type, int flags, size_t width, int has_precision,
|
||||
size_t precision, int pad_ourselves)
|
||||
@ -1752,8 +1781,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
return NULL;
|
||||
|
||||
#define CLEANUP() \
|
||||
free (d.dir); \
|
||||
if (a.arg) \
|
||||
if (d.dir != d.direct_alloc_dir) \
|
||||
free (d.dir); \
|
||||
if (a.arg != a.direct_alloc_arg) \
|
||||
free (a.arg);
|
||||
|
||||
if (PRINTF_FETCHARGS (args, &a) < 0)
|
||||
@ -1927,15 +1957,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
|
||||
abort ();
|
||||
arg = a.arg[dp->width_arg_index].a.a_int;
|
||||
width = arg;
|
||||
if (arg < 0)
|
||||
{
|
||||
/* "A negative field width is taken as a '-' flag
|
||||
followed by a positive field width." */
|
||||
flags |= FLAG_LEFT;
|
||||
width = (unsigned int) (-arg);
|
||||
width = -width;
|
||||
}
|
||||
else
|
||||
width = arg;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2043,8 +2072,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
characters = 0;
|
||||
}
|
||||
|
||||
if (has_width && width > characters
|
||||
&& !(dp->flags & FLAG_LEFT))
|
||||
if (characters < width && !(dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - characters;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2097,8 +2125,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
}
|
||||
# endif
|
||||
|
||||
if (has_width && width > characters
|
||||
&& (dp->flags & FLAG_LEFT))
|
||||
if (characters < width && (dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - characters;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2171,8 +2198,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
characters = 0;
|
||||
}
|
||||
|
||||
if (has_width && width > characters
|
||||
&& !(dp->flags & FLAG_LEFT))
|
||||
if (characters < width && !(dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - characters;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2225,8 +2251,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
}
|
||||
# endif
|
||||
|
||||
if (has_width && width > characters
|
||||
&& (dp->flags & FLAG_LEFT))
|
||||
if (characters < width && (dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - characters;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2299,8 +2324,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
characters = 0;
|
||||
}
|
||||
|
||||
if (has_width && width > characters
|
||||
&& !(dp->flags & FLAG_LEFT))
|
||||
if (characters < width && !(dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - characters;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2353,8 +2377,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
}
|
||||
# endif
|
||||
|
||||
if (has_width && width > characters
|
||||
&& (dp->flags & FLAG_LEFT))
|
||||
if (characters < width && (dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - characters;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2405,15 +2428,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
|
||||
abort ();
|
||||
arg = a.arg[dp->width_arg_index].a.a_int;
|
||||
width = arg;
|
||||
if (arg < 0)
|
||||
{
|
||||
/* "A negative field width is taken as a '-' flag
|
||||
followed by a positive field width." */
|
||||
flags |= FLAG_LEFT;
|
||||
width = (unsigned int) (-arg);
|
||||
width = -width;
|
||||
}
|
||||
else
|
||||
width = arg;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2543,8 +2565,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
characters = 0;
|
||||
}
|
||||
|
||||
if (has_width && width > characters
|
||||
&& !(dp->flags & FLAG_LEFT))
|
||||
if (characters < width && !(dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - characters;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2605,8 +2626,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
}
|
||||
}
|
||||
|
||||
if (has_width && width > characters
|
||||
&& (dp->flags & FLAG_LEFT))
|
||||
if (characters < width && (dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - characters;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2622,7 +2642,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
size_t characters;
|
||||
# if !DCHAR_IS_TCHAR
|
||||
/* This code assumes that TCHAR_T is 'char'. */
|
||||
typedef int TCHAR_T_verify[2 * (sizeof (TCHAR_T) == 1) - 1];
|
||||
verify (sizeof (TCHAR_T) == 1);
|
||||
TCHAR_T *tmpsrc;
|
||||
DCHAR_T *tmpdst;
|
||||
size_t tmpdst_len;
|
||||
@ -2783,7 +2803,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
if (has_width)
|
||||
{
|
||||
# if ENABLE_UNISTDIO
|
||||
/* Outside POSIX, it's preferrable to compare the width
|
||||
/* Outside POSIX, it's preferable to compare the width
|
||||
against the number of _characters_ of the converted
|
||||
value. */
|
||||
w = DCHAR_MBSNLEN (result + length, characters);
|
||||
@ -2797,8 +2817,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
/* w doesn't matter. */
|
||||
w = 0;
|
||||
|
||||
if (has_width && width > w
|
||||
&& !(dp->flags & FLAG_LEFT))
|
||||
if (w < width && !(dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - w;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2881,8 +2900,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
length += tmpdst_len;
|
||||
# endif
|
||||
|
||||
if (has_width && width > w
|
||||
&& (dp->flags & FLAG_LEFT))
|
||||
if (w < width && (dp->flags & FLAG_LEFT))
|
||||
{
|
||||
size_t n = width - w;
|
||||
ENSURE_ALLOCATION (xsum (length, n));
|
||||
@ -2909,17 +2927,16 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
{
|
||||
arg_type type = a.arg[dp->arg_index].type;
|
||||
int flags = dp->flags;
|
||||
int has_width;
|
||||
size_t width;
|
||||
int has_precision;
|
||||
size_t precision;
|
||||
size_t tmp_length;
|
||||
size_t count;
|
||||
DCHAR_T tmpbuf[700];
|
||||
DCHAR_T *tmp;
|
||||
DCHAR_T *pad_ptr;
|
||||
DCHAR_T *p;
|
||||
|
||||
has_width = 0;
|
||||
width = 0;
|
||||
if (dp->width_start != dp->width_end)
|
||||
{
|
||||
@ -2930,15 +2947,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
|
||||
abort ();
|
||||
arg = a.arg[dp->width_arg_index].a.a_int;
|
||||
width = arg;
|
||||
if (arg < 0)
|
||||
{
|
||||
/* "A negative field width is taken as a '-' flag
|
||||
followed by a positive field width." */
|
||||
flags |= FLAG_LEFT;
|
||||
width = (unsigned int) (-arg);
|
||||
width = -width;
|
||||
}
|
||||
else
|
||||
width = arg;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2948,7 +2964,6 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
width = xsum (xtimes (width, 10), *digitp++ - '0');
|
||||
while (digitp != dp->width_end);
|
||||
}
|
||||
has_width = 1;
|
||||
}
|
||||
|
||||
has_precision = 0;
|
||||
@ -3324,11 +3339,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
abort ();
|
||||
# endif
|
||||
}
|
||||
|
||||
/* The generated string now extends from tmp to p, with the
|
||||
zero padding insertion point being at pad_ptr. */
|
||||
if (has_width && p - tmp < width)
|
||||
count = p - tmp;
|
||||
|
||||
if (count < width)
|
||||
{
|
||||
size_t pad = width - (p - tmp);
|
||||
size_t pad = width - count;
|
||||
DCHAR_T *end = p + pad;
|
||||
|
||||
if (flags & FLAG_LEFT)
|
||||
@ -3361,28 +3379,26 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
p = end;
|
||||
}
|
||||
|
||||
{
|
||||
size_t count = p - tmp;
|
||||
count = p - tmp;
|
||||
|
||||
if (count >= tmp_length)
|
||||
/* tmp_length was incorrectly calculated - fix the
|
||||
code above! */
|
||||
abort ();
|
||||
if (count >= tmp_length)
|
||||
/* tmp_length was incorrectly calculated - fix the
|
||||
code above! */
|
||||
abort ();
|
||||
|
||||
/* Make room for the result. */
|
||||
if (count >= allocated - length)
|
||||
{
|
||||
size_t n = xsum (length, count);
|
||||
/* Make room for the result. */
|
||||
if (count >= allocated - length)
|
||||
{
|
||||
size_t n = xsum (length, count);
|
||||
|
||||
ENSURE_ALLOCATION (n);
|
||||
}
|
||||
ENSURE_ALLOCATION (n);
|
||||
}
|
||||
|
||||
/* Append the result. */
|
||||
memcpy (result + length, tmp, count * sizeof (DCHAR_T));
|
||||
if (tmp != tmpbuf)
|
||||
free (tmp);
|
||||
length += count;
|
||||
}
|
||||
/* Append the result. */
|
||||
memcpy (result + length, tmp, count * sizeof (DCHAR_T));
|
||||
if (tmp != tmpbuf)
|
||||
free (tmp);
|
||||
length += count;
|
||||
}
|
||||
#endif
|
||||
#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
|
||||
@ -3416,8 +3432,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
arg_type type = a.arg[dp->arg_index].type;
|
||||
# endif
|
||||
int flags = dp->flags;
|
||||
int has_width;
|
||||
size_t width;
|
||||
size_t count;
|
||||
int has_precision;
|
||||
size_t precision;
|
||||
size_t tmp_length;
|
||||
@ -3426,7 +3442,6 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
DCHAR_T *pad_ptr;
|
||||
DCHAR_T *p;
|
||||
|
||||
has_width = 0;
|
||||
width = 0;
|
||||
if (dp->width_start != dp->width_end)
|
||||
{
|
||||
@ -3437,15 +3452,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
|
||||
abort ();
|
||||
arg = a.arg[dp->width_arg_index].a.a_int;
|
||||
width = arg;
|
||||
if (arg < 0)
|
||||
{
|
||||
/* "A negative field width is taken as a '-' flag
|
||||
followed by a positive field width." */
|
||||
flags |= FLAG_LEFT;
|
||||
width = (unsigned int) (-arg);
|
||||
width = -width;
|
||||
}
|
||||
else
|
||||
width = arg;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3455,7 +3469,6 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
width = xsum (xtimes (width, 10), *digitp++ - '0');
|
||||
while (digitp != dp->width_end);
|
||||
}
|
||||
has_width = 1;
|
||||
}
|
||||
|
||||
has_precision = 0;
|
||||
@ -3895,9 +3908,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
digits without trailing zeroes. */
|
||||
if (exponent >= 0)
|
||||
{
|
||||
size_t count = exponent + 1;
|
||||
size_t ecount = exponent + 1;
|
||||
/* Note: count <= precision = ndigits. */
|
||||
for (; count > 0; count--)
|
||||
for (; ecount > 0; ecount--)
|
||||
*p++ = digits[--ndigits];
|
||||
if ((flags & FLAG_ALT) || ndigits > nzeroes)
|
||||
{
|
||||
@ -3911,10 +3924,10 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t count = -exponent - 1;
|
||||
size_t ecount = -exponent - 1;
|
||||
*p++ = '0';
|
||||
*p++ = decimal_point_char ();
|
||||
for (; count > 0; count--)
|
||||
for (; ecount > 0; ecount--)
|
||||
*p++ = '0';
|
||||
while (ndigits > nzeroes)
|
||||
{
|
||||
@ -4365,9 +4378,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
digits without trailing zeroes. */
|
||||
if (exponent >= 0)
|
||||
{
|
||||
size_t count = exponent + 1;
|
||||
/* Note: count <= precision = ndigits. */
|
||||
for (; count > 0; count--)
|
||||
size_t ecount = exponent + 1;
|
||||
/* Note: ecount <= precision = ndigits. */
|
||||
for (; ecount > 0; ecount--)
|
||||
*p++ = digits[--ndigits];
|
||||
if ((flags & FLAG_ALT) || ndigits > nzeroes)
|
||||
{
|
||||
@ -4381,10 +4394,10 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t count = -exponent - 1;
|
||||
size_t ecount = -exponent - 1;
|
||||
*p++ = '0';
|
||||
*p++ = decimal_point_char ();
|
||||
for (; count > 0; count--)
|
||||
for (; ecount > 0; ecount--)
|
||||
*p++ = '0';
|
||||
while (ndigits > nzeroes)
|
||||
{
|
||||
@ -4512,9 +4525,11 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
|
||||
/* The generated string now extends from tmp to p, with the
|
||||
zero padding insertion point being at pad_ptr. */
|
||||
if (has_width && p - tmp < width)
|
||||
count = p - tmp;
|
||||
|
||||
if (count < width)
|
||||
{
|
||||
size_t pad = width - (p - tmp);
|
||||
size_t pad = width - count;
|
||||
DCHAR_T *end = p + pad;
|
||||
|
||||
if (flags & FLAG_LEFT)
|
||||
@ -4547,36 +4562,36 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
p = end;
|
||||
}
|
||||
|
||||
{
|
||||
size_t count = p - tmp;
|
||||
count = p - tmp;
|
||||
|
||||
if (count >= tmp_length)
|
||||
/* tmp_length was incorrectly calculated - fix the
|
||||
code above! */
|
||||
abort ();
|
||||
if (count >= tmp_length)
|
||||
/* tmp_length was incorrectly calculated - fix the
|
||||
code above! */
|
||||
abort ();
|
||||
|
||||
/* Make room for the result. */
|
||||
if (count >= allocated - length)
|
||||
{
|
||||
size_t n = xsum (length, count);
|
||||
/* Make room for the result. */
|
||||
if (count >= allocated - length)
|
||||
{
|
||||
size_t n = xsum (length, count);
|
||||
|
||||
ENSURE_ALLOCATION (n);
|
||||
}
|
||||
ENSURE_ALLOCATION (n);
|
||||
}
|
||||
|
||||
/* Append the result. */
|
||||
memcpy (result + length, tmp, count * sizeof (DCHAR_T));
|
||||
if (tmp != tmpbuf)
|
||||
free (tmp);
|
||||
length += count;
|
||||
}
|
||||
/* Append the result. */
|
||||
memcpy (result + length, tmp, count * sizeof (DCHAR_T));
|
||||
if (tmp != tmpbuf)
|
||||
free (tmp);
|
||||
length += count;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
arg_type type = a.arg[dp->arg_index].type;
|
||||
int flags = dp->flags;
|
||||
#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
|
||||
#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
|
||||
int has_width;
|
||||
#endif
|
||||
#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
|
||||
size_t width;
|
||||
#endif
|
||||
#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION
|
||||
@ -4598,14 +4613,17 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
TCHAR_T *fbp;
|
||||
unsigned int prefix_count;
|
||||
int prefixes[2] IF_LINT (= { 0 });
|
||||
int orig_errno;
|
||||
#if !USE_SNPRINTF
|
||||
size_t tmp_length;
|
||||
TCHAR_T tmpbuf[700];
|
||||
TCHAR_T *tmp;
|
||||
#endif
|
||||
|
||||
#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
|
||||
#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
|
||||
has_width = 0;
|
||||
#endif
|
||||
#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
|
||||
width = 0;
|
||||
if (dp->width_start != dp->width_end)
|
||||
{
|
||||
@ -4616,15 +4634,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
|
||||
abort ();
|
||||
arg = a.arg[dp->width_arg_index].a.a_int;
|
||||
width = arg;
|
||||
if (arg < 0)
|
||||
{
|
||||
/* "A negative field width is taken as a '-' flag
|
||||
followed by a positive field width." */
|
||||
flags |= FLAG_LEFT;
|
||||
width = (unsigned int) (-arg);
|
||||
width = -width;
|
||||
}
|
||||
else
|
||||
width = arg;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -4634,7 +4651,9 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
width = xsum (xtimes (width, 10), *digitp++ - '0');
|
||||
while (digitp != dp->width_end);
|
||||
}
|
||||
#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
|
||||
has_width = 1;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -4752,6 +4771,10 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
*fbp++ = ' ';
|
||||
if (flags & FLAG_ALT)
|
||||
*fbp++ = '#';
|
||||
#if __GLIBC__ >= 2 && !defined __UCLIBC__
|
||||
if (flags & FLAG_LOCALIZED)
|
||||
*fbp++ = 'I';
|
||||
#endif
|
||||
if (!pad_ourselves)
|
||||
{
|
||||
if (flags & FLAG_ZERO)
|
||||
@ -4835,20 +4858,21 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
#endif
|
||||
*fbp = dp->conversion;
|
||||
#if USE_SNPRINTF
|
||||
# if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
|
||||
# if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
|
||||
fbp[1] = '%';
|
||||
fbp[2] = 'n';
|
||||
fbp[3] = '\0';
|
||||
# else
|
||||
/* On glibc2 systems from glibc >= 2.3 - probably also older
|
||||
ones - we know that snprintf's returns value conforms to
|
||||
ISO C 99: the gl_SNPRINTF_DIRECTIVE_N test passes.
|
||||
ones - we know that snprintf's return value conforms to
|
||||
ISO C 99: the tests gl_SNPRINTF_RETVAL_C99 and
|
||||
gl_SNPRINTF_TRUNCATION_C99 pass.
|
||||
Therefore we can avoid using %n in this situation.
|
||||
On glibc2 systems from 2004-10-18 or newer, the use of %n
|
||||
in format strings in writable memory may crash the program
|
||||
(if compiled with _FORTIFY_SOURCE=2), so we should avoid it
|
||||
in this situation. */
|
||||
/* On native Win32 systems (such as mingw), we can avoid using
|
||||
/* On native Windows systems (such as mingw), we can avoid using
|
||||
%n because:
|
||||
- Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
|
||||
snprintf does not write more than the specified number
|
||||
@ -4857,7 +4881,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
- Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf
|
||||
allows us to recognize the case of an insufficient
|
||||
buffer size: it returns -1 in this case.
|
||||
On native Win32 systems (such as mingw) where the OS is
|
||||
On native Windows systems (such as mingw) where the OS is
|
||||
Windows Vista, the use of %n in format strings by default
|
||||
crashes the program. See
|
||||
<http://gcc.gnu.org/ml/gcc/2007-06/msg00122.html> and
|
||||
@ -4901,6 +4925,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
*(TCHAR_T *) (result + length) = '\0';
|
||||
#endif
|
||||
|
||||
orig_errno = errno;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
int count = -1;
|
||||
@ -5115,7 +5141,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
size_t tmp_length =
|
||||
MAX_ROOM_NEEDED (&a, dp->arg_index,
|
||||
dp->conversion, type, flags,
|
||||
width, has_precision,
|
||||
width,
|
||||
has_precision,
|
||||
precision, pad_ourselves);
|
||||
|
||||
if (maxlen < tmp_length)
|
||||
@ -5285,8 +5312,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
DCHAR_T *tmpdst;
|
||||
size_t tmpdst_len;
|
||||
/* This code assumes that TCHAR_T is 'char'. */
|
||||
typedef int TCHAR_T_verify
|
||||
[2 * (sizeof (TCHAR_T) == 1) - 1];
|
||||
verify (sizeof (TCHAR_T) == 1);
|
||||
# if USE_SNPRINTF
|
||||
tmpsrc = (TCHAR_T *) (result + length);
|
||||
# else
|
||||
@ -5379,7 +5405,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
{
|
||||
size_t w;
|
||||
# if ENABLE_UNISTDIO
|
||||
/* Outside POSIX, it's preferrable to compare the width
|
||||
/* Outside POSIX, it's preferable to compare the width
|
||||
against the number of _characters_ of the converted
|
||||
value. */
|
||||
w = DCHAR_MBSNLEN (result + length, count);
|
||||
@ -5499,6 +5525,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
|
||||
length += count;
|
||||
break;
|
||||
}
|
||||
errno = orig_errno;
|
||||
#undef pad_ourselves
|
||||
#undef prec_ourselves
|
||||
}
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* vsprintf with automatic memory allocation.
|
||||
Copyright (C) 2002-2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002-2004, 2012 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _VASNPRINTF_H
|
||||
#define _VASNPRINTF_H
|
||||
@ -30,7 +28,7 @@
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
|
||||
# define __attribute__(Spec) /* empty */
|
||||
# endif
|
||||
/* The __-protected variants of `format' and `printf' attributes
|
||||
/* The __-protected variants of 'format' and 'printf' attributes
|
||||
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||||
# define __format__ format
|
||||
|
@ -1,20 +1,18 @@
|
||||
/* vswprintf with automatic memory allocation.
|
||||
Copyright (C) 2002-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
|
||||
by the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _VASNWPRINTF_H
|
||||
#define _VASNWPRINTF_H
|
||||
|
279
intl/verify.h
Normal file
279
intl/verify.h
Normal file
@ -0,0 +1,279 @@
|
||||
/* Compile-time assert-like macros.
|
||||
|
||||
Copyright (C) 2005-2006, 2009-2014 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */
|
||||
|
||||
#ifndef _GL_VERIFY_H
|
||||
#define _GL_VERIFY_H
|
||||
|
||||
|
||||
/* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert works as per C11.
|
||||
This is supported by GCC 4.6.0 and later, in C mode, and its use
|
||||
here generates easier-to-read diagnostics when verify (R) fails.
|
||||
|
||||
Define _GL_HAVE_STATIC_ASSERT to 1 if static_assert works as per C++11.
|
||||
This will likely be supported by future GCC versions, in C++ mode.
|
||||
|
||||
Use this only with GCC. If we were willing to slow 'configure'
|
||||
down we could also use it with other compilers, but since this
|
||||
affects only the quality of diagnostics, why bother? */
|
||||
#if (4 < __GNUC__ + (6 <= __GNUC_MINOR__) \
|
||||
&& (201112L <= __STDC_VERSION__ || !defined __STRICT_ANSI__) \
|
||||
&& !defined __cplusplus)
|
||||
# define _GL_HAVE__STATIC_ASSERT 1
|
||||
#endif
|
||||
/* The condition (99 < __GNUC__) is temporary, until we know about the
|
||||
first G++ release that supports static_assert. */
|
||||
#if (99 < __GNUC__) && defined __cplusplus
|
||||
# define _GL_HAVE_STATIC_ASSERT 1
|
||||
#endif
|
||||
|
||||
/* FreeBSD 9.1 <sys/cdefs.h>, included by <stddef.h> and lots of other
|
||||
system headers, defines a conflicting _Static_assert that is no
|
||||
better than ours; override it. */
|
||||
#ifndef _GL_HAVE_STATIC_ASSERT
|
||||
# include <stddef.h>
|
||||
# undef _Static_assert
|
||||
#endif
|
||||
|
||||
/* Each of these macros verifies that its argument R is nonzero. To
|
||||
be portable, R should be an integer constant expression. Unlike
|
||||
assert (R), there is no run-time overhead.
|
||||
|
||||
If _Static_assert works, verify (R) uses it directly. Similarly,
|
||||
_GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct
|
||||
that is an operand of sizeof.
|
||||
|
||||
The code below uses several ideas for C++ compilers, and for C
|
||||
compilers that do not support _Static_assert:
|
||||
|
||||
* The first step is ((R) ? 1 : -1). Given an expression R, of
|
||||
integral or boolean or floating-point type, this yields an
|
||||
expression of integral type, whose value is later verified to be
|
||||
constant and nonnegative.
|
||||
|
||||
* Next this expression W is wrapped in a type
|
||||
struct _gl_verify_type {
|
||||
unsigned int _gl_verify_error_if_negative: W;
|
||||
}.
|
||||
If W is negative, this yields a compile-time error. No compiler can
|
||||
deal with a bit-field of negative size.
|
||||
|
||||
One might think that an array size check would have the same
|
||||
effect, that is, that the type struct { unsigned int dummy[W]; }
|
||||
would work as well. However, inside a function, some compilers
|
||||
(such as C++ compilers and GNU C) allow local parameters and
|
||||
variables inside array size expressions. With these compilers,
|
||||
an array size check would not properly diagnose this misuse of
|
||||
the verify macro:
|
||||
|
||||
void function (int n) { verify (n < 0); }
|
||||
|
||||
* For the verify macro, the struct _gl_verify_type will need to
|
||||
somehow be embedded into a declaration. To be portable, this
|
||||
declaration must declare an object, a constant, a function, or a
|
||||
typedef name. If the declared entity uses the type directly,
|
||||
such as in
|
||||
|
||||
struct dummy {...};
|
||||
typedef struct {...} dummy;
|
||||
extern struct {...} *dummy;
|
||||
extern void dummy (struct {...} *);
|
||||
extern struct {...} *dummy (void);
|
||||
|
||||
two uses of the verify macro would yield colliding declarations
|
||||
if the entity names are not disambiguated. A workaround is to
|
||||
attach the current line number to the entity name:
|
||||
|
||||
#define _GL_CONCAT0(x, y) x##y
|
||||
#define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
|
||||
extern struct {...} * _GL_CONCAT (dummy, __LINE__);
|
||||
|
||||
But this has the problem that two invocations of verify from
|
||||
within the same macro would collide, since the __LINE__ value
|
||||
would be the same for both invocations. (The GCC __COUNTER__
|
||||
macro solves this problem, but is not portable.)
|
||||
|
||||
A solution is to use the sizeof operator. It yields a number,
|
||||
getting rid of the identity of the type. Declarations like
|
||||
|
||||
extern int dummy [sizeof (struct {...})];
|
||||
extern void dummy (int [sizeof (struct {...})]);
|
||||
extern int (*dummy (void)) [sizeof (struct {...})];
|
||||
|
||||
can be repeated.
|
||||
|
||||
* Should the implementation use a named struct or an unnamed struct?
|
||||
Which of the following alternatives can be used?
|
||||
|
||||
extern int dummy [sizeof (struct {...})];
|
||||
extern int dummy [sizeof (struct _gl_verify_type {...})];
|
||||
extern void dummy (int [sizeof (struct {...})]);
|
||||
extern void dummy (int [sizeof (struct _gl_verify_type {...})]);
|
||||
extern int (*dummy (void)) [sizeof (struct {...})];
|
||||
extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})];
|
||||
|
||||
In the second and sixth case, the struct type is exported to the
|
||||
outer scope; two such declarations therefore collide. GCC warns
|
||||
about the first, third, and fourth cases. So the only remaining
|
||||
possibility is the fifth case:
|
||||
|
||||
extern int (*dummy (void)) [sizeof (struct {...})];
|
||||
|
||||
* GCC warns about duplicate declarations of the dummy function if
|
||||
-Wredundant-decls is used. GCC 4.3 and later have a builtin
|
||||
__COUNTER__ macro that can let us generate unique identifiers for
|
||||
each dummy function, to suppress this warning.
|
||||
|
||||
* This implementation exploits the fact that older versions of GCC,
|
||||
which do not support _Static_assert, also do not warn about the
|
||||
last declaration mentioned above.
|
||||
|
||||
* GCC warns if -Wnested-externs is enabled and verify() is used
|
||||
within a function body; but inside a function, you can always
|
||||
arrange to use verify_expr() instead.
|
||||
|
||||
* In C++, any struct definition inside sizeof is invalid.
|
||||
Use a template type to work around the problem. */
|
||||
|
||||
/* Concatenate two preprocessor tokens. */
|
||||
#define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
|
||||
#define _GL_CONCAT0(x, y) x##y
|
||||
|
||||
/* _GL_COUNTER is an integer, preferably one that changes each time we
|
||||
use it. Use __COUNTER__ if it works, falling back on __LINE__
|
||||
otherwise. __LINE__ isn't perfect, but it's better than a
|
||||
constant. */
|
||||
#if defined __COUNTER__ && __COUNTER__ != __COUNTER__
|
||||
# define _GL_COUNTER __COUNTER__
|
||||
#else
|
||||
# define _GL_COUNTER __LINE__
|
||||
#endif
|
||||
|
||||
/* Generate a symbol with the given prefix, making it unique if
|
||||
possible. */
|
||||
#define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER)
|
||||
|
||||
/* Verify requirement R at compile-time, as an integer constant expression
|
||||
that returns 1. If R is false, fail at compile-time, preferably
|
||||
with a diagnostic that includes the string-literal DIAGNOSTIC. */
|
||||
|
||||
#define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \
|
||||
(!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC)))
|
||||
|
||||
#ifdef __cplusplus
|
||||
# if !GNULIB_defined_struct__gl_verify_type
|
||||
template <int w>
|
||||
struct _gl_verify_type {
|
||||
unsigned int _gl_verify_error_if_negative: w;
|
||||
};
|
||||
# define GNULIB_defined_struct__gl_verify_type 1
|
||||
# endif
|
||||
# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
|
||||
_gl_verify_type<(R) ? 1 : -1>
|
||||
#elif defined _GL_HAVE__STATIC_ASSERT
|
||||
# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
|
||||
struct { \
|
||||
_Static_assert (R, DIAGNOSTIC); \
|
||||
int _gl_dummy; \
|
||||
}
|
||||
#else
|
||||
# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
|
||||
struct { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; }
|
||||
#endif
|
||||
|
||||
/* Verify requirement R at compile-time, as a declaration without a
|
||||
trailing ';'. If R is false, fail at compile-time, preferably
|
||||
with a diagnostic that includes the string-literal DIAGNOSTIC.
|
||||
|
||||
Unfortunately, unlike C11, this implementation must appear as an
|
||||
ordinary declaration, and cannot appear inside struct { ... }. */
|
||||
|
||||
#ifdef _GL_HAVE__STATIC_ASSERT
|
||||
# define _GL_VERIFY _Static_assert
|
||||
#else
|
||||
# define _GL_VERIFY(R, DIAGNOSTIC) \
|
||||
extern int (*_GL_GENSYM (_gl_verify_function) (void)) \
|
||||
[_GL_VERIFY_TRUE (R, DIAGNOSTIC)]
|
||||
#endif
|
||||
|
||||
/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */
|
||||
#ifdef _GL_STATIC_ASSERT_H
|
||||
# if !defined _GL_HAVE__STATIC_ASSERT && !defined _Static_assert
|
||||
# define _Static_assert(R, DIAGNOSTIC) _GL_VERIFY (R, DIAGNOSTIC)
|
||||
# endif
|
||||
# if !defined _GL_HAVE_STATIC_ASSERT && !defined static_assert
|
||||
# define static_assert _Static_assert /* C11 requires this #define. */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* @assert.h omit start@ */
|
||||
|
||||
/* Each of these macros verifies that its argument R is nonzero. To
|
||||
be portable, R should be an integer constant expression. Unlike
|
||||
assert (R), there is no run-time overhead.
|
||||
|
||||
There are two macros, since no single macro can be used in all
|
||||
contexts in C. verify_true (R) is for scalar contexts, including
|
||||
integer constant expression contexts. verify (R) is for declaration
|
||||
contexts, e.g., the top level. */
|
||||
|
||||
/* Verify requirement R at compile-time, as an integer constant expression.
|
||||
Return 1. This is equivalent to verify_expr (R, 1).
|
||||
|
||||
verify_true is obsolescent; please use verify_expr instead. */
|
||||
|
||||
#define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")")
|
||||
|
||||
/* Verify requirement R at compile-time. Return the value of the
|
||||
expression E. */
|
||||
|
||||
#define verify_expr(R, E) \
|
||||
(_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E))
|
||||
|
||||
/* Verify requirement R at compile-time, as a declaration without a
|
||||
trailing ';'. */
|
||||
|
||||
#define verify(R) _GL_VERIFY (R, "verify (" #R ")")
|
||||
|
||||
#ifndef __has_builtin
|
||||
# define __has_builtin(x) 0
|
||||
#endif
|
||||
|
||||
/* Assume that R always holds. This lets the compiler optimize
|
||||
accordingly. R should not have side-effects; it may or may not be
|
||||
evaluated. Behavior is undefined if R is false. */
|
||||
|
||||
#if (__has_builtin (__builtin_unreachable) \
|
||||
|| 4 < __GNUC__ + (5 <= __GNUC_MINOR__))
|
||||
# define assume(R) ((R) ? (void) 0 : __builtin_unreachable ())
|
||||
#elif 1200 <= _MSC_VER
|
||||
# define assume(R) __assume (R)
|
||||
#elif (defined lint \
|
||||
&& (__has_builtin (__builtin_trap) \
|
||||
|| 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))))
|
||||
/* Doing it this way helps various packages when configured with
|
||||
--enable-gcc-warnings, which compiles with -Dlint. It's nicer
|
||||
when 'assume' silences warnings even with older GCCs. */
|
||||
# define assume(R) ((R) ? (void) 0 : __builtin_trap ())
|
||||
#else
|
||||
# define assume(R) ((void) (0 && (R)))
|
||||
#endif
|
||||
|
||||
/* @assert.h omit end@ */
|
||||
|
||||
#endif
|
@ -1,20 +1,18 @@
|
||||
/* libintl library version.
|
||||
Copyright (C) 2005 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -1,24 +1,26 @@
|
||||
/* Parse printf format string.
|
||||
Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2011 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 free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _WPRINTF_PARSE_H
|
||||
#define _WPRINTF_PARSE_H
|
||||
|
||||
#if HAVE_FEATURES_H
|
||||
# include <features.h> /* for __GLIBC__, __UCLIBC__ */
|
||||
#endif
|
||||
|
||||
#include "printf-args.h"
|
||||
|
||||
|
||||
@ -29,10 +31,16 @@
|
||||
#define FLAG_SPACE 8 /* space flag */
|
||||
#define FLAG_ALT 16 /* # flag */
|
||||
#define FLAG_ZERO 32
|
||||
#if __GLIBC__ >= 2 && !defined __UCLIBC__
|
||||
# define FLAG_LOCALIZED 64 /* I flag, uses localized digits */
|
||||
#endif
|
||||
|
||||
/* arg_index value indicating that no argument is consumed. */
|
||||
#define ARG_NONE (~(size_t)0)
|
||||
|
||||
/* Number of directly allocated directives (no malloc() needed). */
|
||||
#define N_DIRECT_ALLOC_DIRECTIVES 7
|
||||
|
||||
/* A parsed directive. */
|
||||
typedef struct
|
||||
{
|
||||
@ -45,7 +53,7 @@ typedef struct
|
||||
const wchar_t* precision_start;
|
||||
const wchar_t* precision_end;
|
||||
size_t precision_arg_index;
|
||||
wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */
|
||||
wchar_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */
|
||||
size_t arg_index;
|
||||
}
|
||||
wchar_t_directive;
|
||||
@ -57,6 +65,7 @@ typedef struct
|
||||
wchar_t_directive *dir;
|
||||
size_t max_width_length;
|
||||
size_t max_precision_length;
|
||||
wchar_t_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES];
|
||||
}
|
||||
wchar_t_directives;
|
||||
|
||||
|
3
intl/xsize.c
Normal file
3
intl/xsize.c
Normal file
@ -0,0 +1,3 @@
|
||||
#include <config.h>
|
||||
#define XSIZE_INLINE _GL_EXTERN_INLINE
|
||||
#include "xsize.h"
|
38
intl/xsize.h
38
intl/xsize.h
@ -1,21 +1,19 @@
|
||||
/* xsize.h -- Checked size_t computations.
|
||||
|
||||
Copyright (C) 2003, 2008 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2008-2014 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)
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1, 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.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
USA. */
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef _XSIZE_H
|
||||
#define _XSIZE_H
|
||||
@ -29,6 +27,14 @@
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
#ifndef _GL_INLINE_HEADER_BEGIN
|
||||
#error "Please include config.h first."
|
||||
#endif
|
||||
_GL_INLINE_HEADER_BEGIN
|
||||
#ifndef XSIZE_INLINE
|
||||
# define XSIZE_INLINE _GL_INLINE
|
||||
#endif
|
||||
|
||||
/* The size of memory objects is often computed through expressions of
|
||||
type size_t. Example:
|
||||
void* p = malloc (header_size + n * element_size).
|
||||
@ -50,7 +56,7 @@
|
||||
((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
|
||||
|
||||
/* Sum of two sizes, with overflow check. */
|
||||
static inline size_t
|
||||
XSIZE_INLINE size_t
|
||||
#if __GNUC__ >= 3
|
||||
__attribute__ ((__pure__))
|
||||
#endif
|
||||
@ -61,7 +67,7 @@ xsum (size_t size1, size_t size2)
|
||||
}
|
||||
|
||||
/* Sum of three sizes, with overflow check. */
|
||||
static inline size_t
|
||||
XSIZE_INLINE size_t
|
||||
#if __GNUC__ >= 3
|
||||
__attribute__ ((__pure__))
|
||||
#endif
|
||||
@ -71,7 +77,7 @@ xsum3 (size_t size1, size_t size2, size_t size3)
|
||||
}
|
||||
|
||||
/* Sum of four sizes, with overflow check. */
|
||||
static inline size_t
|
||||
XSIZE_INLINE size_t
|
||||
#if __GNUC__ >= 3
|
||||
__attribute__ ((__pure__))
|
||||
#endif
|
||||
@ -81,7 +87,7 @@ xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
|
||||
}
|
||||
|
||||
/* Maximum of two sizes, with overflow check. */
|
||||
static inline size_t
|
||||
XSIZE_INLINE size_t
|
||||
#if __GNUC__ >= 3
|
||||
__attribute__ ((__pure__))
|
||||
#endif
|
||||
@ -94,7 +100,7 @@ xmax (size_t size1, size_t size2)
|
||||
|
||||
/* Multiplication of a count with an element size, with overflow check.
|
||||
The count must be >= 0 and the element size must be > 0.
|
||||
This is a macro, not an inline function, so that it works correctly even
|
||||
This is a macro, not a function, so that it works correctly even
|
||||
when N is of a wider type and N > SIZE_MAX. */
|
||||
#define xtimes(N, ELSIZE) \
|
||||
((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
|
||||
@ -106,4 +112,6 @@ xmax (size_t size1, size_t size2)
|
||||
#define size_in_bounds_p(SIZE) \
|
||||
((SIZE) != SIZE_MAX)
|
||||
|
||||
_GL_INLINE_HEADER_END
|
||||
|
||||
#endif /* _XSIZE_H */
|
||||
|
@ -1,5 +1,5 @@
|
||||
# codeset.m4 serial 4 (gettext-0.18)
|
||||
dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc.
|
||||
# codeset.m4 serial 5 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2000-2002, 2006, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -9,10 +9,12 @@ dnl From Bruno Haible.
|
||||
AC_DEFUN([AM_LANGINFO_CODESET],
|
||||
[
|
||||
AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
|
||||
[AC_TRY_LINK([#include <langinfo.h>],
|
||||
[char* cs = nl_langinfo(CODESET); return !cs;],
|
||||
[am_cv_langinfo_codeset=yes],
|
||||
[am_cv_langinfo_codeset=no])
|
||||
[AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <langinfo.h>]],
|
||||
[[char* cs = nl_langinfo(CODESET); return !cs;]])],
|
||||
[am_cv_langinfo_codeset=yes],
|
||||
[am_cv_langinfo_codeset=no])
|
||||
])
|
||||
if test $am_cv_langinfo_codeset = yes; then
|
||||
AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
|
||||
|
@ -1,5 +1,5 @@
|
||||
# fcntl-o.m4 serial 1
|
||||
dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
|
||||
# fcntl-o.m4 serial 4
|
||||
dnl Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -12,13 +12,26 @@ dnl Written by Paul Eggert.
|
||||
AC_DEFUN([gl_FCNTL_O_FLAGS],
|
||||
[
|
||||
dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
|
||||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||||
dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
|
||||
dnl AC_GNU_SOURCE.
|
||||
m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
|
||||
[AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
|
||||
[AC_REQUIRE([AC_GNU_SOURCE])])
|
||||
|
||||
AC_CHECK_HEADERS_ONCE([unistd.h])
|
||||
AC_CHECK_FUNCS_ONCE([symlink])
|
||||
AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
|
||||
[AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#if HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#else /* on Windows with MSVC */
|
||||
# include <io.h>
|
||||
# include <stdlib.h>
|
||||
# defined sleep(n) _sleep ((n) * 1000)
|
||||
#endif
|
||||
#include <fcntl.h>
|
||||
#ifndef O_NOATIME
|
||||
#define O_NOATIME 0
|
||||
@ -33,34 +46,74 @@ AC_DEFUN([gl_FCNTL_O_FLAGS],
|
||||
};
|
||||
]],
|
||||
[[
|
||||
int status = !constants;
|
||||
int result = !constants;
|
||||
#if HAVE_SYMLINK
|
||||
{
|
||||
static char const sym[] = "conftest.sym";
|
||||
if (symlink (".", sym) != 0
|
||||
|| close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
|
||||
status |= 32;
|
||||
if (symlink ("/dev/null", sym) != 0)
|
||||
result |= 2;
|
||||
else
|
||||
{
|
||||
int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
|
||||
if (fd >= 0)
|
||||
{
|
||||
close (fd);
|
||||
result |= 4;
|
||||
}
|
||||
}
|
||||
if (unlink (sym) != 0 || symlink (".", sym) != 0)
|
||||
result |= 2;
|
||||
else
|
||||
{
|
||||
int fd = open (sym, O_RDONLY | O_NOFOLLOW);
|
||||
if (fd >= 0)
|
||||
{
|
||||
close (fd);
|
||||
result |= 4;
|
||||
}
|
||||
}
|
||||
unlink (sym);
|
||||
}
|
||||
#endif
|
||||
{
|
||||
static char const file[] = "confdefs.h";
|
||||
int fd = open (file, O_RDONLY | O_NOATIME);
|
||||
char c;
|
||||
struct stat st0, st1;
|
||||
if (fd < 0
|
||||
|| fstat (fd, &st0) != 0
|
||||
|| sleep (1) != 0
|
||||
|| read (fd, &c, 1) != 1
|
||||
|| close (fd) != 0
|
||||
|| stat (file, &st1) != 0
|
||||
|| st0.st_atime != st1.st_atime)
|
||||
status |= 64;
|
||||
if (fd < 0)
|
||||
result |= 8;
|
||||
else
|
||||
{
|
||||
struct stat st0;
|
||||
if (fstat (fd, &st0) != 0)
|
||||
result |= 16;
|
||||
else
|
||||
{
|
||||
char c;
|
||||
sleep (1);
|
||||
if (read (fd, &c, 1) != 1)
|
||||
result |= 24;
|
||||
else
|
||||
{
|
||||
if (close (fd) != 0)
|
||||
result |= 32;
|
||||
else
|
||||
{
|
||||
struct stat st1;
|
||||
if (stat (file, &st1) != 0)
|
||||
result |= 40;
|
||||
else
|
||||
if (st0.st_atime != st1.st_atime)
|
||||
result |= 64;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return status;]])],
|
||||
return result;]])],
|
||||
[gl_cv_header_working_fcntl_h=yes],
|
||||
[case $? in #(
|
||||
32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
|
||||
4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
|
||||
64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
|
||||
96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
|
||||
68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
|
||||
*) gl_cv_header_working_fcntl_h='no';;
|
||||
esac],
|
||||
[gl_cv_header_working_fcntl_h=cross-compiling])])
|
||||
|
@ -1,5 +1,5 @@
|
||||
# gettext.m4 serial 63 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||||
# gettext.m4 serial 66 (gettext-0.18.2)
|
||||
dnl Copyright (C) 1995-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -35,7 +35,7 @@ dnl will be ignored. If NEEDSYMBOL is specified and is
|
||||
dnl 'need-formatstring-macros', then GNU gettext implementations that don't
|
||||
dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
|
||||
dnl INTLDIR is used to find the intl libraries. If empty,
|
||||
dnl the value `$(top_builddir)/intl/' is used.
|
||||
dnl the value '$(top_builddir)/intl/' is used.
|
||||
dnl
|
||||
dnl The result of the configuration is one of three cases:
|
||||
dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
|
||||
@ -97,7 +97,7 @@ AC_DEFUN([AM_GNU_GETTEXT],
|
||||
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
|
||||
])
|
||||
|
||||
dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
|
||||
dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation.
|
||||
gt_INTL_MACOSX
|
||||
|
||||
dnl Set USE_NLS.
|
||||
@ -157,12 +157,18 @@ changequote([,])dnl
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
|
||||
[AC_TRY_LINK([#include <libintl.h>
|
||||
[AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <libintl.h>
|
||||
$gt_revision_test_code
|
||||
extern int _nl_msg_cat_cntr;
|
||||
extern int *_nl_domain_bindings;],
|
||||
[bindtextdomain ("", "");
|
||||
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
|
||||
extern int *_nl_domain_bindings;
|
||||
]],
|
||||
[[
|
||||
bindtextdomain ("", "");
|
||||
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
|
||||
]])],
|
||||
[eval "$gt_func_gnugettext_libc=yes"],
|
||||
[eval "$gt_func_gnugettext_libc=no"])])
|
||||
|
||||
@ -183,35 +189,47 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_b
|
||||
gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBINTL"
|
||||
dnl Now see whether libintl exists and does not depend on libiconv.
|
||||
AC_TRY_LINK([#include <libintl.h>
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <libintl.h>
|
||||
$gt_revision_test_code
|
||||
extern int _nl_msg_cat_cntr;
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
const char *_nl_expand_alias (const char *);],
|
||||
[bindtextdomain ("", "");
|
||||
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
|
||||
const char *_nl_expand_alias (const char *);
|
||||
]],
|
||||
[[
|
||||
bindtextdomain ("", "");
|
||||
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
|
||||
]])],
|
||||
[eval "$gt_func_gnugettext_libintl=yes"],
|
||||
[eval "$gt_func_gnugettext_libintl=no"])
|
||||
dnl Now see whether libintl exists and depends on libiconv.
|
||||
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
AC_TRY_LINK([#include <libintl.h>
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <libintl.h>
|
||||
$gt_revision_test_code
|
||||
extern int _nl_msg_cat_cntr;
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
const char *_nl_expand_alias (const char *);],
|
||||
[bindtextdomain ("", "");
|
||||
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
|
||||
[LIBINTL="$LIBINTL $LIBICONV"
|
||||
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
|
||||
eval "$gt_func_gnugettext_libintl=yes"
|
||||
])
|
||||
const char *_nl_expand_alias (const char *);
|
||||
]],
|
||||
[[
|
||||
bindtextdomain ("", "");
|
||||
return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
|
||||
]])],
|
||||
[LIBINTL="$LIBINTL $LIBICONV"
|
||||
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
|
||||
eval "$gt_func_gnugettext_libintl=yes"
|
||||
])
|
||||
fi
|
||||
CPPFLAGS="$gt_save_CPPFLAGS"
|
||||
LIBS="$gt_save_LIBS"])
|
||||
|
@ -1,5 +1,6 @@
|
||||
# glibc2.m4 serial 2
|
||||
dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
|
||||
# glibc2.m4 serial 3
|
||||
dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -15,7 +16,7 @@ AC_DEFUN([gt_GLIBC2],
|
||||
[
|
||||
#include <features.h>
|
||||
#ifdef __GNU_LIBRARY__
|
||||
#if (__GLIBC__ >= 2)
|
||||
#if (__GLIBC__ >= 2) && !defined __UCLIBC__
|
||||
Lucky GNU user
|
||||
#endif
|
||||
#endif
|
||||
|
@ -1,23 +1,27 @@
|
||||
# glibc21.m4 serial 4
|
||||
dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
|
||||
# glibc21.m4 serial 5
|
||||
dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Test for the GNU C Library, version 2.1 or newer.
|
||||
# Test for the GNU C Library, version 2.1 or newer, or uClibc.
|
||||
# From Bruno Haible.
|
||||
|
||||
AC_DEFUN([gl_GLIBC21],
|
||||
[
|
||||
AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
|
||||
AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc],
|
||||
[ac_cv_gnu_library_2_1],
|
||||
[AC_EGREP_CPP([Lucky GNU user],
|
||||
[AC_EGREP_CPP([Lucky],
|
||||
[
|
||||
#include <features.h>
|
||||
#ifdef __GNU_LIBRARY__
|
||||
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
|
||||
Lucky GNU user
|
||||
#endif
|
||||
#endif
|
||||
#ifdef __UCLIBC__
|
||||
Lucky user
|
||||
#endif
|
||||
],
|
||||
[ac_cv_gnu_library_2_1=yes],
|
||||
|
110
m4/iconv.m4
110
m4/iconv.m4
@ -1,5 +1,5 @@
|
||||
# iconv.m4 serial 11 (gettext-0.18.1)
|
||||
dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
|
||||
# iconv.m4 serial 18 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2000-2002, 2007-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -30,27 +30,35 @@ AC_DEFUN([AM_ICONV_LINK],
|
||||
dnl Add $INCICONV to CPPFLAGS before performing the following checks,
|
||||
dnl because if the user has installed libiconv and not disabled its use
|
||||
dnl via --without-libiconv-prefix, he wants to use it. The first
|
||||
dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
|
||||
dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
|
||||
am_save_CPPFLAGS="$CPPFLAGS"
|
||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
|
||||
|
||||
AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
|
||||
am_cv_func_iconv="no, consider installing GNU libiconv"
|
||||
am_cv_lib_iconv=no
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <stdlib.h>
|
||||
#include <iconv.h>
|
||||
]],
|
||||
[[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);]])],
|
||||
[am_cv_func_iconv=yes])
|
||||
if test "$am_cv_func_iconv" != yes; then
|
||||
am_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <stdlib.h>
|
||||
#include <iconv.h>
|
||||
]],
|
||||
[[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);]])],
|
||||
[am_cv_lib_iconv=yes]
|
||||
[am_cv_func_iconv=yes])
|
||||
LIBS="$am_save_LIBS"
|
||||
@ -58,16 +66,19 @@ AC_DEFUN([AM_ICONV_LINK],
|
||||
])
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
|
||||
dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
|
||||
dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
|
||||
dnl Solaris 10.
|
||||
am_save_LIBS="$LIBS"
|
||||
if test $am_cv_lib_iconv = yes; then
|
||||
LIBS="$LIBS $LIBICONV"
|
||||
fi
|
||||
AC_TRY_RUN([
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <iconv.h>
|
||||
#include <string.h>
|
||||
int main ()
|
||||
{
|
||||
int result = 0;
|
||||
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
|
||||
returns. */
|
||||
{
|
||||
@ -84,7 +95,8 @@ int main ()
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if (res == 0)
|
||||
return 1;
|
||||
result |= 1;
|
||||
iconv_close (cd_utf8_to_88591);
|
||||
}
|
||||
}
|
||||
/* Test against Solaris 10 bug: Failures are not distinguishable from
|
||||
@ -103,7 +115,27 @@ int main ()
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if (res == 0)
|
||||
return 1;
|
||||
result |= 2;
|
||||
iconv_close (cd_ascii_to_88591);
|
||||
}
|
||||
}
|
||||
/* Test against AIX 6.1..7.1 bug: Buffer overrun. */
|
||||
{
|
||||
iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
|
||||
if (cd_88591_to_utf8 != (iconv_t)(-1))
|
||||
{
|
||||
static const char input[] = "\304";
|
||||
static char buf[2] = { (char)0xDE, (char)0xAD };
|
||||
const char *inptr = input;
|
||||
size_t inbytesleft = 1;
|
||||
char *outptr = buf;
|
||||
size_t outbytesleft = 1;
|
||||
size_t res = iconv (cd_88591_to_utf8,
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
|
||||
result |= 4;
|
||||
iconv_close (cd_88591_to_utf8);
|
||||
}
|
||||
}
|
||||
#if 0 /* This bug could be worked around by the caller. */
|
||||
@ -122,7 +154,8 @@ int main ()
|
||||
(char **) &inptr, &inbytesleft,
|
||||
&outptr, &outbytesleft);
|
||||
if ((int)res > 0)
|
||||
return 1;
|
||||
result |= 8;
|
||||
iconv_close (cd_88591_to_utf8);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -136,13 +169,19 @@ int main ()
|
||||
&& iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
|
||||
/* Try HP-UX names. */
|
||||
&& iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
|
||||
return 1;
|
||||
return 0;
|
||||
}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
|
||||
[case "$host_os" in
|
||||
result |= 16;
|
||||
return result;
|
||||
}]])],
|
||||
[am_cv_func_iconv_works=yes],
|
||||
[am_cv_func_iconv_works=no],
|
||||
[
|
||||
changequote(,)dnl
|
||||
case "$host_os" in
|
||||
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
|
||||
*) am_cv_func_iconv_works="guessing yes" ;;
|
||||
esac])
|
||||
esac
|
||||
changequote([,])dnl
|
||||
])
|
||||
LIBS="$am_save_LIBS"
|
||||
])
|
||||
case "$am_cv_func_iconv_works" in
|
||||
@ -183,32 +222,47 @@ m4_define([gl_iconv_AC_DEFUN],
|
||||
m4_version_prereq([2.64],
|
||||
[[AC_DEFUN_ONCE(
|
||||
[$1], [$2])]],
|
||||
[[AC_DEFUN(
|
||||
[$1], [$2])]]))
|
||||
[m4_ifdef([gl_00GNULIB],
|
||||
[[AC_DEFUN_ONCE(
|
||||
[$1], [$2])]],
|
||||
[[AC_DEFUN(
|
||||
[$1], [$2])]])]))
|
||||
gl_iconv_AC_DEFUN([AM_ICONV],
|
||||
[
|
||||
AM_ICONV_LINK
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
AC_MSG_CHECKING([for iconv declaration])
|
||||
AC_CACHE_VAL([am_cv_proto_iconv], [
|
||||
AC_TRY_COMPILE([
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <stdlib.h>
|
||||
#include <iconv.h>
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
|
||||
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||
#else
|
||||
size_t iconv();
|
||||
#endif
|
||||
], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
|
||||
]],
|
||||
[[]])],
|
||||
[am_cv_proto_iconv_arg1=""],
|
||||
[am_cv_proto_iconv_arg1="const"])
|
||||
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
|
||||
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
|
||||
AC_MSG_RESULT([
|
||||
$am_cv_proto_iconv])
|
||||
AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
|
||||
[Define as const if the declaration of iconv() needs const.])
|
||||
dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
|
||||
m4_ifdef([gl_ICONV_H_DEFAULTS],
|
||||
[AC_REQUIRE([gl_ICONV_H_DEFAULTS])
|
||||
if test -n "$am_cv_proto_iconv_arg1"; then
|
||||
ICONV_CONST="const"
|
||||
fi
|
||||
])
|
||||
fi
|
||||
])
|
||||
|
@ -1,5 +1,5 @@
|
||||
# intdiv0.m4 serial 3 (gettext-0.18)
|
||||
dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc.
|
||||
# intdiv0.m4 serial 6 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2002, 2007-2008, 2010-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -18,7 +18,7 @@ AC_DEFUN([gt_INTDIV0],
|
||||
changequote(,)dnl
|
||||
case "$host_os" in
|
||||
macos* | darwin[6-9]* | darwin[1-9][0-9]*)
|
||||
# On MacOS X 10.2 or newer, just assume the same as when cross-
|
||||
# On Mac OS X 10.2 or newer, just assume the same as when cross-
|
||||
# compiling. If we were to perform the real test, 1 Crash Report
|
||||
# dialog window would pop up.
|
||||
case "$host_cpu" in
|
||||
@ -29,7 +29,8 @@ changequote(,)dnl
|
||||
esac
|
||||
changequote([,])dnl
|
||||
if test -z "$gt_cv_int_divbyzero_sigfpe"; then
|
||||
AC_TRY_RUN([
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
|
||||
@ -59,9 +60,11 @@ int main ()
|
||||
|
||||
z = x / y;
|
||||
nan = y / y;
|
||||
exit (1);
|
||||
exit (2);
|
||||
}
|
||||
], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no],
|
||||
]])],
|
||||
[gt_cv_int_divbyzero_sigfpe=yes],
|
||||
[gt_cv_int_divbyzero_sigfpe=no],
|
||||
[
|
||||
# Guess based on the CPU.
|
||||
changequote(,)dnl
|
||||
|
74
m4/intl.m4
74
m4/intl.m4
@ -1,5 +1,5 @@
|
||||
# intl.m4 serial 17 (gettext-0.18) - updated by wk 2015-01-19
|
||||
dnl Copyright (C) 1995-2009 Free Software Foundation, Inc.
|
||||
# intl.m4 serial 27 (gettext-0.19)
|
||||
dnl Copyright (C) 1995-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -17,7 +17,7 @@ dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009.
|
||||
|
||||
AC_PREREQ([2.52])
|
||||
AC_PREREQ([2.60])
|
||||
|
||||
dnl Checks for all prerequisites of the intl subdirectory,
|
||||
dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
|
||||
@ -42,6 +42,8 @@ AC_DEFUN([AM_INTL_SUBDIR],
|
||||
AC_REQUIRE([gl_XSIZE])dnl
|
||||
AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
|
||||
AC_REQUIRE([gt_INTL_MACOSX])dnl
|
||||
AC_REQUIRE([gl_EXTERN_INLINE])dnl
|
||||
AC_REQUIRE([gt_GL_ATTRIBUTE])dnl
|
||||
|
||||
dnl Support for automake's --enable-silent-rules.
|
||||
case "$enable_silent_rules" in
|
||||
@ -55,21 +57,19 @@ AC_DEFUN([AM_INTL_SUBDIR],
|
||||
[AC_DEFINE([ptrdiff_t], [long],
|
||||
[Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
|
||||
])
|
||||
AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
|
||||
AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h])
|
||||
AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
|
||||
snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
|
||||
|
||||
dnl Use the _snprintf function only if it is declared (because on NetBSD it
|
||||
dnl is defined as a weak alias of snprintf; we prefer to use the latter).
|
||||
gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
|
||||
gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
|
||||
AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include <stdio.h>])
|
||||
|
||||
dnl Use the *_unlocked functions only if they are declared.
|
||||
dnl (because some of them were defined without being declared in Solaris
|
||||
dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
|
||||
dnl on Solaris 2.5.1 to run on Solaris 2.6).
|
||||
dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
|
||||
gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
|
||||
AC_CHECK_DECLS([getc_unlocked], , , [#include <stdio.h>])
|
||||
|
||||
case $gt_cv_func_printf_posix in
|
||||
*yes) HAVE_POSIX_PRINTF=1 ;;
|
||||
@ -220,9 +220,10 @@ AC_DEFUN([gt_INTL_SUBDIR_CORE],
|
||||
AC_REQUIRE([gt_INTTYPES_PRI])dnl
|
||||
AC_REQUIRE([gl_LOCK])dnl
|
||||
|
||||
AC_TRY_LINK(
|
||||
[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
|
||||
[],
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]],
|
||||
[[]])],
|
||||
[AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
|
||||
[Define to 1 if the compiler understands __builtin_expect.])])
|
||||
|
||||
@ -235,16 +236,13 @@ AC_DEFUN([gt_INTL_SUBDIR_CORE],
|
||||
dnl (because some of them were defined without being declared in Solaris
|
||||
dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
|
||||
dnl on Solaris 2.5.1 to run on Solaris 2.6).
|
||||
dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
|
||||
gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>])
|
||||
gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>])
|
||||
AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include <stdio.h>])
|
||||
|
||||
AM_ICONV
|
||||
|
||||
dnl intl/plural.c is generated from intl/plural.y. It requires bison,
|
||||
dnl because plural.y uses bison specific features. It requires at least
|
||||
dnl bison-1.26 because earlier versions generate a plural.c that doesn't
|
||||
dnl compile.
|
||||
dnl bison-2.7 for %define api.pure.
|
||||
dnl bison is only needed for the maintainer (who touches plural.y). But in
|
||||
dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
|
||||
dnl the rule in general Makefile. Now, some people carelessly touch the
|
||||
@ -261,7 +259,7 @@ changequote(<<,>>)dnl
|
||||
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
|
||||
2.[7-9]* | [3-9].*)
|
||||
changequote([,])dnl
|
||||
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
||||
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
||||
@ -273,22 +271,28 @@ changequote([,])dnl
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
dnl gt_CHECK_DECL(FUNC, INCLUDES)
|
||||
dnl Check whether a function is declared.
|
||||
AC_DEFUN([gt_CHECK_DECL],
|
||||
[
|
||||
AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1],
|
||||
[AC_TRY_COMPILE([$2], [
|
||||
#ifndef $1
|
||||
char *p = (char *) $1;
|
||||
dnl Copies _GL_UNUSED and _GL_ATTRIBUTE_PURE definitions from
|
||||
dnl gnulib-common.m4 as a fallback, if the project isn't using Gnulib.
|
||||
AC_DEFUN([gt_GL_ATTRIBUTE], [
|
||||
m4_ifndef([gl_[]COMMON],
|
||||
AH_VERBATIM([gt_gl_attribute],
|
||||
[/* Define as a marker that can be attached to declarations that might not
|
||||
be used. This helps to reduce warnings, such as from
|
||||
GCC -Wunused-parameter. */
|
||||
#ifndef _GL_UNUSED
|
||||
# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
|
||||
# define _GL_UNUSED __attribute__ ((__unused__))
|
||||
# else
|
||||
# define _GL_UNUSED
|
||||
# endif
|
||||
#endif
|
||||
], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
|
||||
if test $ac_cv_have_decl_$1 = yes; then
|
||||
gt_value=1
|
||||
else
|
||||
gt_value=0
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
|
||||
[Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
|
||||
])
|
||||
|
||||
/* The __pure__ attribute was added in gcc 2.96. */
|
||||
#ifndef _GL_ATTRIBUTE_PURE
|
||||
# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||||
# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
||||
# else
|
||||
# define _GL_ATTRIBUTE_PURE /* empty */
|
||||
# endif
|
||||
#endif
|
||||
]))])
|
||||
|
@ -1,5 +1,5 @@
|
||||
# intldir.m4 serial 2 (gettext-0.18)
|
||||
dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
|
||||
dnl Copyright (C) 2006, 2009-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# intlmacosx.m4 serial 3 (gettext-0.18)
|
||||
dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
|
||||
# intlmacosx.m4 serial 5 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2004-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -13,35 +13,40 @@ dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Checks for special options needed on MacOS X.
|
||||
dnl Checks for special options needed on Mac OS X.
|
||||
dnl Defines INTL_MACOSX_LIBS.
|
||||
AC_DEFUN([gt_INTL_MACOSX],
|
||||
[
|
||||
dnl Check for API introduced in MacOS X 10.2.
|
||||
dnl Check for API introduced in Mac OS X 10.2.
|
||||
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
|
||||
[gt_cv_func_CFPreferencesCopyAppValue],
|
||||
[gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
||||
AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
|
||||
[CFPreferencesCopyAppValue(NULL, NULL)],
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <CoreFoundation/CFPreferences.h>]],
|
||||
[[CFPreferencesCopyAppValue(NULL, NULL)]])],
|
||||
[gt_cv_func_CFPreferencesCopyAppValue=yes],
|
||||
[gt_cv_func_CFPreferencesCopyAppValue=no])
|
||||
LIBS="$gt_save_LIBS"])
|
||||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
|
||||
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
|
||||
[Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
|
||||
[Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
|
||||
fi
|
||||
dnl Check for API introduced in MacOS X 10.3.
|
||||
dnl Check for API introduced in Mac OS X 10.3.
|
||||
AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
|
||||
[gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
||||
AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <CoreFoundation/CFLocale.h>]],
|
||||
[[CFLocaleCopyCurrent();]])],
|
||||
[gt_cv_func_CFLocaleCopyCurrent=yes],
|
||||
[gt_cv_func_CFLocaleCopyCurrent=no])
|
||||
LIBS="$gt_save_LIBS"])
|
||||
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||||
AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
|
||||
[Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
|
||||
[Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
|
||||
fi
|
||||
INTL_MACOSX_LIBS=
|
||||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
||||
|
13
m4/intmax.m4
13
m4/intmax.m4
@ -1,5 +1,5 @@
|
||||
# intmax.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 2002-2005, 2008-2010 Free Software Foundation, Inc.
|
||||
# intmax.m4 serial 6 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2002-2005, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -13,7 +13,9 @@ AC_DEFUN([gt_TYPE_INTMAX_T],
|
||||
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
|
||||
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
|
||||
AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
|
||||
[AC_TRY_COMPILE([
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#if HAVE_STDINT_H_WITH_UINTMAX
|
||||
@ -22,8 +24,9 @@ AC_DEFUN([gt_TYPE_INTMAX_T],
|
||||
#if HAVE_INTTYPES_H_WITH_UINTMAX
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
], [intmax_t x = -1;
|
||||
return !x;],
|
||||
]],
|
||||
[[intmax_t x = -1;
|
||||
return !x;]])],
|
||||
[gt_cv_c_intmax_t=yes],
|
||||
[gt_cv_c_intmax_t=no])])
|
||||
if test $gt_cv_c_intmax_t = yes; then
|
||||
|
@ -1,12 +1,12 @@
|
||||
# inttypes-pri.m4 serial 6 (gettext-0.18)
|
||||
dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc.
|
||||
# inttypes-pri.m4 serial 7 (gettext-0.18.2)
|
||||
dnl Copyright (C) 1997-2002, 2006, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_PREREQ([2.52])
|
||||
AC_PREREQ([2.53])
|
||||
|
||||
# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
|
||||
# macros to non-string values. This is the case on AIX 4.3.3.
|
||||
@ -18,11 +18,17 @@ AC_DEFUN([gt_INTTYPES_PRI],
|
||||
AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
|
||||
[gt_cv_inttypes_pri_broken],
|
||||
[
|
||||
AC_TRY_COMPILE([#include <inttypes.h>
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <inttypes.h>
|
||||
#ifdef PRId32
|
||||
char *p = PRId32;
|
||||
#endif
|
||||
], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
|
||||
]],
|
||||
[[]])],
|
||||
[gt_cv_inttypes_pri_broken=no],
|
||||
[gt_cv_inttypes_pri_broken=yes])
|
||||
])
|
||||
fi
|
||||
if test "$gt_cv_inttypes_pri_broken" = yes; then
|
||||
|
@ -1,5 +1,5 @@
|
||||
# inttypes_h.m4 serial 9
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
|
||||
# inttypes_h.m4 serial 10
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -12,12 +12,15 @@ dnl From Paul Eggert.
|
||||
AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
|
||||
[
|
||||
AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
|
||||
[AC_TRY_COMPILE(
|
||||
[#include <sys/types.h>
|
||||
#include <inttypes.h>],
|
||||
[uintmax_t i = (uintmax_t) -1; return !i;],
|
||||
[gl_cv_header_inttypes_h=yes],
|
||||
[gl_cv_header_inttypes_h=no])])
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <sys/types.h>
|
||||
#include <inttypes.h>
|
||||
]],
|
||||
[[uintmax_t i = (uintmax_t) -1; return !i;]])],
|
||||
[gl_cv_header_inttypes_h=yes],
|
||||
[gl_cv_header_inttypes_h=no])])
|
||||
if test $gl_cv_header_inttypes_h = yes; then
|
||||
AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
|
||||
[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
|
||||
|
@ -1,5 +1,5 @@
|
||||
# lcmessage.m4 serial 6 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2002, 2004-2005, 2008-2010 Free Software Foundation,
|
||||
# lcmessage.m4 serial 7 (gettext-0.18.2)
|
||||
dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
@ -22,8 +22,12 @@ dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
|
||||
AC_DEFUN([gt_LC_MESSAGES],
|
||||
[
|
||||
AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
|
||||
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
|
||||
[gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])])
|
||||
[AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <locale.h>]],
|
||||
[[return LC_MESSAGES]])],
|
||||
[gt_cv_val_LC_MESSAGES=yes],
|
||||
[gt_cv_val_LC_MESSAGES=no])])
|
||||
if test $gt_cv_val_LC_MESSAGES = yes; then
|
||||
AC_DEFINE([HAVE_LC_MESSAGES], [1],
|
||||
[Define if your <locale.h> file defines LC_MESSAGES.])
|
||||
|
77
m4/lib-ld.m4
77
m4/lib-ld.m4
@ -1,50 +1,56 @@
|
||||
# lib-ld.m4 serial 4 (gettext-0.18)
|
||||
dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
|
||||
# lib-ld.m4 serial 6
|
||||
dnl Copyright (C) 1996-2003, 2009-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl Subroutines of libtool.m4,
|
||||
dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
|
||||
dnl with libtool.m4.
|
||||
dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid
|
||||
dnl collision with libtool.m4.
|
||||
|
||||
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
|
||||
dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no.
|
||||
AC_DEFUN([AC_LIB_PROG_LD_GNU],
|
||||
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
|
||||
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
||||
[# I'd rather use --version here, but apparently some GNU lds only accept -v.
|
||||
case `$LD -v 2>&1 </dev/null` in
|
||||
*GNU* | *'with BFD'*)
|
||||
acl_cv_prog_gnu_ld=yes ;;
|
||||
acl_cv_prog_gnu_ld=yes
|
||||
;;
|
||||
*)
|
||||
acl_cv_prog_gnu_ld=no ;;
|
||||
acl_cv_prog_gnu_ld=no
|
||||
;;
|
||||
esac])
|
||||
with_gnu_ld=$acl_cv_prog_gnu_ld
|
||||
])
|
||||
|
||||
dnl From libtool-1.4. Sets the variable LD.
|
||||
dnl From libtool-2.4. Sets the variable LD.
|
||||
AC_DEFUN([AC_LIB_PROG_LD],
|
||||
[AC_ARG_WITH([gnu-ld],
|
||||
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
||||
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
||||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
[AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
|
||||
AC_ARG_WITH([gnu-ld],
|
||||
[AS_HELP_STRING([--with-gnu-ld],
|
||||
[assume the C compiler uses GNU ld [default=no]])],
|
||||
[test "$withval" = no || with_gnu_ld=yes],
|
||||
[with_gnu_ld=no])dnl
|
||||
|
||||
# Prepare PATH_SEPARATOR.
|
||||
# The user is always right.
|
||||
if test "${PATH_SEPARATOR+set}" != set; then
|
||||
echo "#! /bin/sh" >conf$$.sh
|
||||
echo "exit 0" >>conf$$.sh
|
||||
chmod +x conf$$.sh
|
||||
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||
PATH_SEPARATOR=';'
|
||||
else
|
||||
PATH_SEPARATOR=:
|
||||
fi
|
||||
rm -f conf$$.sh
|
||||
# Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
|
||||
# contains only /bin. Note that ksh looks also at the FPATH variable,
|
||||
# so we have to set that as well for the test.
|
||||
PATH_SEPARATOR=:
|
||||
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
|
||||
&& { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
|
||||
|| PATH_SEPARATOR=';'
|
||||
}
|
||||
fi
|
||||
|
||||
ac_prog=ld
|
||||
if test "$GCC" = yes; then
|
||||
# Check if gcc -print-prog-name=ld gives a path.
|
||||
AC_MSG_CHECKING([for ld used by GCC])
|
||||
AC_MSG_CHECKING([for ld used by $CC])
|
||||
case $host in
|
||||
*-*-mingw*)
|
||||
# gcc leaves a trailing carriage return which upsets mingw
|
||||
@ -54,11 +60,11 @@ if test "$GCC" = yes; then
|
||||
esac
|
||||
case $ac_prog in
|
||||
# Accept absolute paths.
|
||||
[[\\/]* | [A-Za-z]:[\\/]*)]
|
||||
[re_direlt='/[^/][^/]*/\.\./']
|
||||
# Canonicalize the path of ld
|
||||
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
|
||||
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
|
||||
[[\\/]]* | ?:[[\\/]]*)
|
||||
re_direlt='/[[^/]][[^/]]*/\.\./'
|
||||
# Canonicalize the pathname of ld
|
||||
ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'`
|
||||
while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do
|
||||
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
|
||||
done
|
||||
test -z "$LD" && LD="$ac_prog"
|
||||
@ -79,23 +85,26 @@ else
|
||||
fi
|
||||
AC_CACHE_VAL([acl_cv_path_LD],
|
||||
[if test -z "$LD"; then
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
||||
acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
|
||||
for ac_dir in $PATH; do
|
||||
IFS="$acl_save_ifs"
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
|
||||
acl_cv_path_LD="$ac_dir/$ac_prog"
|
||||
# Check to see if the program is GNU ld. I'd rather use --version,
|
||||
# but apparently some GNU ld's only accept -v.
|
||||
# but apparently some variants of GNU ld only accept -v.
|
||||
# Break only if it was the GNU/non-GNU ld that we prefer.
|
||||
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
|
||||
case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
|
||||
*GNU* | *'with BFD'*)
|
||||
test "$with_gnu_ld" != no && break ;;
|
||||
test "$with_gnu_ld" != no && break
|
||||
;;
|
||||
*)
|
||||
test "$with_gnu_ld" != yes && break ;;
|
||||
test "$with_gnu_ld" != yes && break
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
IFS="$acl_save_ifs"
|
||||
else
|
||||
acl_cv_path_LD="$LD" # Let the user override the test with a path.
|
||||
fi])
|
||||
|
@ -1,5 +1,5 @@
|
||||
# lib-link.m4 serial 21 (gettext-0.18)
|
||||
dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
|
||||
# lib-link.m4 serial 26 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -18,9 +18,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
pushdef([Name],[translit([$1],[./-], [___])])
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([Name],[m4_translit([$1],[./+-], [____])])
|
||||
pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
||||
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
||||
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
||||
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
||||
@ -58,9 +58,9 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||
AC_REQUIRE([AC_LIB_RPATH])
|
||||
pushdef([Name],[translit([$1],[./-], [___])])
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([Name],[m4_translit([$1],[./+-], [____])])
|
||||
pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
||||
|
||||
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
||||
dnl accordingly.
|
||||
@ -85,7 +85,8 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
||||
*" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
|
||||
*) LIBS="$LIB[]NAME $LIBS" ;;
|
||||
esac
|
||||
AC_TRY_LINK([$3], [$4],
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM([[$3]], [[$4]])],
|
||||
[ac_cv_lib[]Name=yes],
|
||||
[ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
|
||||
LIBS="$ac_save_LIBS"
|
||||
@ -115,6 +116,8 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
||||
dnl Determine the platform dependent parameters needed to use rpath:
|
||||
dnl acl_libext,
|
||||
dnl acl_shlibext,
|
||||
dnl acl_libname_spec,
|
||||
dnl acl_library_names_spec,
|
||||
dnl acl_hardcode_libdir_flag_spec,
|
||||
dnl acl_hardcode_libdir_separator,
|
||||
dnl acl_hardcode_direct,
|
||||
@ -157,15 +160,15 @@ dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
|
||||
dnl macro call that searches for libname.
|
||||
AC_DEFUN([AC_LIB_FROMPACKAGE],
|
||||
[
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
||||
define([acl_frompackage_]NAME, [$2])
|
||||
popdef([NAME])
|
||||
pushdef([PACK],[$2])
|
||||
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
||||
define([acl_libsinpackage_]PACKUP,
|
||||
m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
|
||||
m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1])
|
||||
popdef([PACKUP])
|
||||
popdef([PACK])
|
||||
])
|
||||
@ -178,14 +181,14 @@ dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
||||
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
||||
[
|
||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
||||
pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
|
||||
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||
pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
||||
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
|
||||
dnl Autoconf >= 2.61 supports dots in --with options.
|
||||
pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
|
||||
pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)])
|
||||
dnl By default, look in $includedir and $libdir.
|
||||
use_additional=yes
|
||||
AC_LIB_WITH_FINAL_PREFIX([
|
||||
@ -242,7 +245,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
||||
names_already_handled="$names_already_handled $name"
|
||||
dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
|
||||
dnl or AC_LIB_HAVE_LINKFLAGS call.
|
||||
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
|
||||
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
|
||||
eval value=\"\$HAVE_LIB$uppername\"
|
||||
if test -n "$value"; then
|
||||
if test "$value" = yes; then
|
||||
|
@ -1,5 +1,5 @@
|
||||
# lib-prefix.m4 serial 7 (gettext-0.18)
|
||||
dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl Copyright (C) 2001-2005, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
25
m4/lock.m4
25
m4/lock.m4
@ -1,5 +1,5 @@
|
||||
# lock.m4 serial 10 (gettext-0.18)
|
||||
dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
|
||||
# lock.m4 serial 13 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2005-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -10,7 +10,7 @@ AC_DEFUN([gl_LOCK],
|
||||
[
|
||||
AC_REQUIRE([gl_THREADLIB])
|
||||
if test "$gl_threads_api" = posix; then
|
||||
# OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
|
||||
# OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the
|
||||
# pthread_rwlock_* functions.
|
||||
AC_CHECK_TYPE([pthread_rwlock_t],
|
||||
[AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
|
||||
@ -18,20 +18,25 @@ AC_DEFUN([gl_LOCK],
|
||||
[],
|
||||
[#include <pthread.h>])
|
||||
# glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
|
||||
AC_TRY_COMPILE([#include <pthread.h>],
|
||||
[#if __FreeBSD__ == 4
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM(
|
||||
[[#include <pthread.h>]],
|
||||
[[
|
||||
#if __FreeBSD__ == 4
|
||||
error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
|
||||
#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \
|
||||
&& __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
|
||||
error "No, in Mac OS X < 10.7 recursive mutexes actually don't work."
|
||||
#else
|
||||
int x = (int)PTHREAD_MUTEX_RECURSIVE;
|
||||
return !x;
|
||||
#endif],
|
||||
#endif
|
||||
]])],
|
||||
[AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
|
||||
[Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
|
||||
fi
|
||||
gl_PREREQ_LOCK
|
||||
])
|
||||
|
||||
# Prerequisites of lib/lock.c.
|
||||
AC_DEFUN([gl_PREREQ_LOCK], [
|
||||
AC_REQUIRE([AC_C_INLINE])
|
||||
])
|
||||
# Prerequisites of lib/glthread/lock.c.
|
||||
AC_DEFUN([gl_PREREQ_LOCK], [:])
|
||||
|
@ -1,5 +1,5 @@
|
||||
# longlong.m4 serial 14
|
||||
dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc.
|
||||
# longlong.m4 serial 17
|
||||
dnl Copyright (C) 1999-2007, 2009-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -7,8 +7,8 @@ dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl From Paul Eggert.
|
||||
|
||||
# Define HAVE_LONG_LONG_INT if 'long long int' works.
|
||||
# This fixes a bug in Autoconf 2.61, but can be removed once we
|
||||
# assume 2.62 everywhere.
|
||||
# This fixes a bug in Autoconf 2.61, and can be faster
|
||||
# than what's in Autoconf 2.62 through 2.68.
|
||||
|
||||
# Note: If the type 'long long int' exists but is only 32 bits large
|
||||
# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
|
||||
@ -16,44 +16,48 @@ dnl From Paul Eggert.
|
||||
|
||||
AC_DEFUN([AC_TYPE_LONG_LONG_INT],
|
||||
[
|
||||
AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
|
||||
AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
|
||||
[AC_LINK_IFELSE(
|
||||
[_AC_TYPE_LONG_LONG_SNIPPET],
|
||||
[dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
|
||||
dnl If cross compiling, assume the bug isn't important, since
|
||||
dnl nobody cross compiles for this platform as far as we know.
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[@%:@include <limits.h>
|
||||
@%:@ifndef LLONG_MAX
|
||||
@%:@ define HALF \
|
||||
(1LL << (sizeof (long long int) * CHAR_BIT - 2))
|
||||
@%:@ define LLONG_MAX (HALF - 1 + HALF)
|
||||
@%:@endif]],
|
||||
[[long long int n = 1;
|
||||
int i;
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
long long int m = n << i;
|
||||
if (m >> i != n)
|
||||
return 1;
|
||||
if (LLONG_MAX / 2 < m)
|
||||
break;
|
||||
}
|
||||
return 0;]])],
|
||||
[ac_cv_type_long_long_int=yes],
|
||||
[ac_cv_type_long_long_int=no],
|
||||
[ac_cv_type_long_long_int=yes])],
|
||||
[ac_cv_type_long_long_int=no])])
|
||||
[ac_cv_type_long_long_int=yes
|
||||
if test "x${ac_cv_prog_cc_c99-no}" = xno; then
|
||||
ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
|
||||
if test $ac_cv_type_long_long_int = yes; then
|
||||
dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
|
||||
dnl If cross compiling, assume the bug is not important, since
|
||||
dnl nobody cross compiles for this platform as far as we know.
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[@%:@include <limits.h>
|
||||
@%:@ifndef LLONG_MAX
|
||||
@%:@ define HALF \
|
||||
(1LL << (sizeof (long long int) * CHAR_BIT - 2))
|
||||
@%:@ define LLONG_MAX (HALF - 1 + HALF)
|
||||
@%:@endif]],
|
||||
[[long long int n = 1;
|
||||
int i;
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
long long int m = n << i;
|
||||
if (m >> i != n)
|
||||
return 1;
|
||||
if (LLONG_MAX / 2 < m)
|
||||
break;
|
||||
}
|
||||
return 0;]])],
|
||||
[],
|
||||
[ac_cv_type_long_long_int=no],
|
||||
[:])
|
||||
fi
|
||||
fi])
|
||||
if test $ac_cv_type_long_long_int = yes; then
|
||||
AC_DEFINE([HAVE_LONG_LONG_INT], [1],
|
||||
[Define to 1 if the system has the type `long long int'.])
|
||||
[Define to 1 if the system has the type 'long long int'.])
|
||||
fi
|
||||
])
|
||||
|
||||
# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
|
||||
# This fixes a bug in Autoconf 2.61, but can be removed once we
|
||||
# assume 2.62 everywhere.
|
||||
# This fixes a bug in Autoconf 2.61, and can be faster
|
||||
# than what's in Autoconf 2.62 through 2.68.
|
||||
|
||||
# Note: If the type 'unsigned long long int' exists but is only 32 bits
|
||||
# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
|
||||
@ -64,13 +68,16 @@ AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
|
||||
[
|
||||
AC_CACHE_CHECK([for unsigned long long int],
|
||||
[ac_cv_type_unsigned_long_long_int],
|
||||
[AC_LINK_IFELSE(
|
||||
[_AC_TYPE_LONG_LONG_SNIPPET],
|
||||
[ac_cv_type_unsigned_long_long_int=yes],
|
||||
[ac_cv_type_unsigned_long_long_int=no])])
|
||||
[ac_cv_type_unsigned_long_long_int=yes
|
||||
if test "x${ac_cv_prog_cc_c99-no}" = xno; then
|
||||
AC_LINK_IFELSE(
|
||||
[_AC_TYPE_LONG_LONG_SNIPPET],
|
||||
[],
|
||||
[ac_cv_type_unsigned_long_long_int=no])
|
||||
fi])
|
||||
if test $ac_cv_type_unsigned_long_long_int = yes; then
|
||||
AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
|
||||
[Define to 1 if the system has the type `unsigned long long int'.])
|
||||
[Define to 1 if the system has the type 'unsigned long long int'.])
|
||||
fi
|
||||
])
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# nls.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
|
||||
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
36
m4/po.m4
36
m4/po.m4
@ -1,5 +1,5 @@
|
||||
# po.m4 serial 17 (gettext-0.18) updated by wk 2015-01-19
|
||||
dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||||
# po.m4 serial 22 (gettext-0.19)
|
||||
dnl Copyright (C) 1995-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -17,7 +17,7 @@ dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||
|
||||
AC_PREREQ([2.50])
|
||||
AC_PREREQ([2.60])
|
||||
|
||||
dnl Checks for all prerequisites of the po subdirectory.
|
||||
AC_DEFUN([AM_PO_SUBDIRS],
|
||||
@ -25,11 +25,12 @@ AC_DEFUN([AM_PO_SUBDIRS],
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||
AC_REQUIRE([AC_PROG_SED])dnl
|
||||
AC_REQUIRE([AM_NLS])dnl
|
||||
|
||||
dnl Release version of the gettext macros. This is used to ensure that
|
||||
dnl the gettext macros and po/Makefile.in.in are in sync.
|
||||
AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
|
||||
AC_SUBST([GETTEXT_MACRO_VERSION], [0.19])
|
||||
|
||||
dnl Perform the following tests also if --disable-nls has been given,
|
||||
dnl because they are needed for "make dist" to work.
|
||||
@ -102,7 +103,7 @@ changequote([,])dnl
|
||||
case "$ac_file" in */Makefile.in)
|
||||
# Adjust a relative srcdir.
|
||||
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||
ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
|
||||
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||
# In autoconf-2.50 it is called $srcdir.
|
||||
@ -118,7 +119,8 @@ changequote([,])dnl
|
||||
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
|
||||
rm -f "$ac_dir/POTFILES"
|
||||
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
|
||||
cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
|
||||
gt_tab=`printf '\t'`
|
||||
cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
|
||||
POMAKEFILEDEPS="POTFILES.in"
|
||||
# ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
|
||||
# on $ac_dir but don't depend on user-specified configuration
|
||||
@ -129,12 +131,12 @@ changequote([,])dnl
|
||||
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
|
||||
fi
|
||||
ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
|
||||
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||
# Hide the ALL_LINGUAS assignment from automake < 1.5.
|
||||
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||||
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
|
||||
else
|
||||
# The set of available languages was given in configure.in.
|
||||
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||
# Hide the ALL_LINGUAS assignment from automake < 1.5.
|
||||
eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
|
||||
fi
|
||||
# Compute POFILES
|
||||
@ -226,7 +228,7 @@ AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
|
||||
changequote(,)dnl
|
||||
# Adjust a relative srcdir.
|
||||
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||
ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
|
||||
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||
# In autoconf-2.50 it is called $srcdir.
|
||||
@ -254,6 +256,7 @@ EOT
|
||||
fi
|
||||
|
||||
# A sed script that extracts the value of VARIABLE from a Makefile.
|
||||
tab=`printf '\t'`
|
||||
sed_x_variable='
|
||||
# Test if the hold space is empty.
|
||||
x
|
||||
@ -261,9 +264,9 @@ s/P/P/
|
||||
x
|
||||
ta
|
||||
# Yes it was empty. Look if we have the expected variable definition.
|
||||
/^[ ]*VARIABLE[ ]*=/{
|
||||
/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{
|
||||
# Seen the first line of the variable definition.
|
||||
s/^[ ]*VARIABLE[ ]*=//
|
||||
s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=//
|
||||
ba
|
||||
}
|
||||
bd
|
||||
@ -315,7 +318,7 @@ changequote([,])dnl
|
||||
sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
|
||||
ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
|
||||
fi
|
||||
# Hide the ALL_LINGUAS assigment from automake < 1.5.
|
||||
# Hide the ALL_LINGUAS assignment from automake < 1.5.
|
||||
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
||||
# Compute POFILES
|
||||
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
|
||||
@ -405,14 +408,15 @@ changequote([,])dnl
|
||||
fi
|
||||
|
||||
sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
|
||||
tab=`printf '\t'`
|
||||
if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
|
||||
# Add dependencies that cannot be formulated as a simple suffix rule.
|
||||
for lang in $ALL_LINGUAS; do
|
||||
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
||||
cat >> "$ac_file.tmp" <<EOF
|
||||
$frobbedlang.msg: $lang.po
|
||||
@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
|
||||
\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||
${tab}@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
|
||||
${tab}\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||
EOF
|
||||
done
|
||||
fi
|
||||
@ -422,8 +426,8 @@ EOF
|
||||
frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
|
||||
cat >> "$ac_file.tmp" <<EOF
|
||||
$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
|
||||
@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
|
||||
\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||
${tab}@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
|
||||
${tab}\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
|
||||
EOF
|
||||
done
|
||||
fi
|
||||
|
@ -1,5 +1,5 @@
|
||||
# printf-posix.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 2003, 2007, 2009-2010 Free Software Foundation, Inc.
|
||||
# printf-posix.m4 serial 6 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2003, 2007, 2009-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -14,7 +14,8 @@ AC_DEFUN([gt_PRINTF_POSIX],
|
||||
AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
|
||||
gt_cv_func_printf_posix,
|
||||
[
|
||||
AC_TRY_RUN([
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
/* The string "%2$d %1$d", with dollar characters protected from the shell's
|
||||
@ -25,16 +26,18 @@ int main ()
|
||||
{
|
||||
sprintf (buf, format, 33, 55);
|
||||
return (strcmp (buf, "55 33") != 0);
|
||||
}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
|
||||
[
|
||||
AC_EGREP_CPP([notposix], [
|
||||
}]])],
|
||||
[gt_cv_func_printf_posix=yes],
|
||||
[gt_cv_func_printf_posix=no],
|
||||
[
|
||||
AC_EGREP_CPP([notposix], [
|
||||
#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
|
||||
notposix
|
||||
#endif
|
||||
],
|
||||
[gt_cv_func_printf_posix="guessing no"],
|
||||
[gt_cv_func_printf_posix="guessing yes"])
|
||||
])
|
||||
],
|
||||
[gt_cv_func_printf_posix="guessing no"],
|
||||
[gt_cv_func_printf_posix="guessing yes"])
|
||||
])
|
||||
])
|
||||
case $gt_cv_func_printf_posix in
|
||||
*yes)
|
||||
|
@ -1,5 +1,5 @@
|
||||
# progtest.m4 serial 6 (gettext-0.18)
|
||||
dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
|
||||
# progtest.m4 serial 7 (gettext-0.18.2)
|
||||
dnl Copyright (C) 1996-2003, 2005, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -27,15 +27,14 @@ AC_DEFUN([AM_PATH_PROG_WITH_TEST],
|
||||
# Prepare PATH_SEPARATOR.
|
||||
# The user is always right.
|
||||
if test "${PATH_SEPARATOR+set}" != set; then
|
||||
echo "#! /bin/sh" >conf$$.sh
|
||||
echo "exit 0" >>conf$$.sh
|
||||
chmod +x conf$$.sh
|
||||
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||
PATH_SEPARATOR=';'
|
||||
else
|
||||
PATH_SEPARATOR=:
|
||||
fi
|
||||
rm -f conf$$.sh
|
||||
# Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
|
||||
# contains only /bin. Note that ksh looks also at the FPATH variable,
|
||||
# so we have to set that as well for the test.
|
||||
PATH_SEPARATOR=:
|
||||
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
|
||||
&& { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
|
||||
|| PATH_SEPARATOR=';'
|
||||
}
|
||||
fi
|
||||
|
||||
# Find out how to test for executable files. Don't use a zero-byte file,
|
||||
|
@ -1,5 +1,5 @@
|
||||
# size_max.m4 serial 9
|
||||
dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc.
|
||||
# size_max.m4 serial 10
|
||||
dnl Copyright (C) 2003, 2005-2006, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -34,10 +34,14 @@ Found it
|
||||
if test $fits_in_uint = 1; then
|
||||
dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
|
||||
dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
|
||||
AC_TRY_COMPILE([#include <stddef.h>
|
||||
extern size_t foo;
|
||||
extern unsigned long foo;
|
||||
], [], [fits_in_uint=0])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <stddef.h>
|
||||
extern size_t foo;
|
||||
extern unsigned long foo;
|
||||
]],
|
||||
[[]])],
|
||||
[fits_in_uint=0])
|
||||
fi
|
||||
dnl We cannot use 'expr' to simplify this expression, because 'expr'
|
||||
dnl works only with 'long' integers in the host environment, while we
|
||||
|
@ -1,5 +1,5 @@
|
||||
# stdint_h.m4 serial 8
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
|
||||
# stdint_h.m4 serial 9
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -12,12 +12,13 @@ dnl From Paul Eggert.
|
||||
AC_DEFUN([gl_AC_HEADER_STDINT_H],
|
||||
[
|
||||
AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
|
||||
[AC_TRY_COMPILE(
|
||||
[#include <sys/types.h>
|
||||
#include <stdint.h>],
|
||||
[uintmax_t i = (uintmax_t) -1; return !i;],
|
||||
[gl_cv_header_stdint_h=yes],
|
||||
[gl_cv_header_stdint_h=no])])
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <sys/types.h>
|
||||
#include <stdint.h>]],
|
||||
[[uintmax_t i = (uintmax_t) -1; return !i;]])],
|
||||
[gl_cv_header_stdint_h=yes],
|
||||
[gl_cv_header_stdint_h=no])])
|
||||
if test $gl_cv_header_stdint_h = yes; then
|
||||
AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
|
||||
[Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
|
||||
|
162
m4/threadlib.m4
162
m4/threadlib.m4
@ -1,5 +1,5 @@
|
||||
# threadlib.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
|
||||
# threadlib.m4 serial 11 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2005-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -9,15 +9,20 @@ dnl From Bruno Haible.
|
||||
dnl gl_THREADLIB
|
||||
dnl ------------
|
||||
dnl Tests for a multithreading library to be used.
|
||||
dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO
|
||||
dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the
|
||||
dnl default is 'no', otherwise it is system dependent. In both cases, the user
|
||||
dnl can change the choice through the options --enable-threads=choice or
|
||||
dnl --disable-threads.
|
||||
dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
|
||||
dnl USE_PTH_THREADS, USE_WIN32_THREADS
|
||||
dnl USE_PTH_THREADS, USE_WINDOWS_THREADS
|
||||
dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
|
||||
dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
|
||||
dnl libtool).
|
||||
dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
|
||||
dnl programs that really need multithread functionality. The difference
|
||||
dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
|
||||
dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
|
||||
dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not.
|
||||
dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
|
||||
dnl multithread-safe programs.
|
||||
|
||||
@ -44,10 +49,12 @@ AC_DEFUN([gl_THREADLIB_EARLY_BODY],
|
||||
[AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
|
||||
[AC_REQUIRE([AC_GNU_SOURCE])])
|
||||
dnl Check for multithreading.
|
||||
m4_divert_text([DEFAULTS], [gl_use_threads_default=])
|
||||
m4_ifdef([gl_THREADLIB_DEFAULT_NO],
|
||||
[m4_divert_text([DEFAULTS], [gl_use_threads_default=no])],
|
||||
[m4_divert_text([DEFAULTS], [gl_use_threads_default=])])
|
||||
AC_ARG_ENABLE([threads],
|
||||
AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
|
||||
AC_HELP_STRING([--disable-threads], [build without multithread safety]),
|
||||
AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
|
||||
AC_HELP_STRING([--disable-threads], [build without multithread safety])]),
|
||||
[gl_use_threads=$enableval],
|
||||
[if test -n "$gl_use_threads_default"; then
|
||||
gl_use_threads="$gl_use_threads_default"
|
||||
@ -80,7 +87,7 @@ changequote([,])dnl
|
||||
# groks <pthread.h>. cc also understands the flag -pthread, but
|
||||
# we don't use it because 1. gcc-2.95 doesn't understand -pthread,
|
||||
# 2. putting a flag into CPPFLAGS that has an effect on the linker
|
||||
# causes the AC_TRY_LINK test below to succeed unexpectedly,
|
||||
# causes the AC_LINK_IFELSE test below to succeed unexpectedly,
|
||||
# leading to wrong values of LIBTHREAD and LTLIBTHREAD.
|
||||
CPPFLAGS="$CPPFLAGS -D_REENTRANT"
|
||||
;;
|
||||
@ -111,18 +118,25 @@ AC_DEFUN([gl_THREADLIB_BODY],
|
||||
[gl_cv_have_weak],
|
||||
[gl_cv_have_weak=no
|
||||
dnl First, test whether the compiler accepts it syntactically.
|
||||
AC_TRY_LINK([extern void xyzzy ();
|
||||
#pragma weak xyzzy], [xyzzy();], [gl_cv_have_weak=maybe])
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[extern void xyzzy ();
|
||||
#pragma weak xyzzy]],
|
||||
[[xyzzy();]])],
|
||||
[gl_cv_have_weak=maybe])
|
||||
if test $gl_cv_have_weak = maybe; then
|
||||
dnl Second, test whether it actually works. On Cygwin 1.7.2, with
|
||||
dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
|
||||
AC_TRY_RUN([
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <stdio.h>
|
||||
#pragma weak fputs
|
||||
int main ()
|
||||
{
|
||||
return (fputs == NULL);
|
||||
}], [gl_cv_have_weak=yes], [gl_cv_have_weak=no],
|
||||
}]])],
|
||||
[gl_cv_have_weak=yes],
|
||||
[gl_cv_have_weak=no],
|
||||
[dnl When cross-compiling, assume that only ELF platforms support
|
||||
dnl weak symbols.
|
||||
AC_EGREP_CPP([Extensible Linking Format],
|
||||
@ -148,13 +162,31 @@ int main ()
|
||||
# Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
|
||||
# in libc. IRIX 6.5 has the first one in both libc and libpthread, but
|
||||
# the second one only in libpthread, and lock.c needs it.
|
||||
AC_TRY_LINK([#include <pthread.h>],
|
||||
[pthread_mutex_lock((pthread_mutex_t*)0);
|
||||
pthread_mutexattr_init((pthread_mutexattr_t*)0);],
|
||||
[gl_have_pthread=yes])
|
||||
#
|
||||
# If -pthread works, prefer it to -lpthread, since Ubuntu 14.04
|
||||
# needs -pthread for some reason. See:
|
||||
# http://lists.gnu.org/archive/html/bug-gnulib/2014-09/msg00023.html
|
||||
save_LIBS=$LIBS
|
||||
for gl_pthread in '' '-pthread'; do
|
||||
LIBS="$LIBS $gl_pthread"
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <pthread.h>
|
||||
pthread_mutex_t m;
|
||||
pthread_mutexattr_t ma;
|
||||
]],
|
||||
[[pthread_mutex_lock (&m);
|
||||
pthread_mutexattr_init (&ma);]])],
|
||||
[gl_have_pthread=yes
|
||||
LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread
|
||||
LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread])
|
||||
LIBS=$save_LIBS
|
||||
test -n "$gl_have_pthread" && break
|
||||
done
|
||||
|
||||
# Test for libpthread by looking for pthread_kill. (Not pthread_self,
|
||||
# since it is defined as a macro on OSF/1.)
|
||||
if test -n "$gl_have_pthread"; then
|
||||
if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then
|
||||
# The program links fine without libpthread. But it may actually
|
||||
# need to link with libpthread in order to create multiple threads.
|
||||
AC_CHECK_LIB([pthread], [pthread_kill],
|
||||
@ -169,7 +201,7 @@ int main ()
|
||||
[Define if the pthread_in_use() detection is hard.])
|
||||
esac
|
||||
])
|
||||
else
|
||||
elif test -z "$gl_have_pthread"; then
|
||||
# Some library is needed. Try libpthread and libc_r.
|
||||
AC_CHECK_LIB([pthread], [pthread_kill],
|
||||
[gl_have_pthread=yes
|
||||
@ -203,9 +235,13 @@ int main ()
|
||||
gl_have_solaristhread=
|
||||
gl_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lthread"
|
||||
AC_TRY_LINK([#include <thread.h>
|
||||
#include <synch.h>],
|
||||
[thr_self();],
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <thread.h>
|
||||
#include <synch.h>
|
||||
]],
|
||||
[[thr_self();]])],
|
||||
[gl_have_solaristhread=yes])
|
||||
LIBS="$gl_save_LIBS"
|
||||
if test -n "$gl_have_solaristhread"; then
|
||||
@ -230,8 +266,10 @@ int main ()
|
||||
AC_LIB_LINKFLAGS([pth])
|
||||
gl_have_pth=
|
||||
gl_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lpth"
|
||||
AC_TRY_LINK([#include <pth.h>], [pth_self();], [gl_have_pth=yes])
|
||||
LIBS="$LIBS $LIBPTH"
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])],
|
||||
[gl_have_pth=yes])
|
||||
LIBS="$gl_save_LIBS"
|
||||
if test -n "$gl_have_pth"; then
|
||||
gl_threads_api=pth
|
||||
@ -254,17 +292,19 @@ int main ()
|
||||
fi
|
||||
fi
|
||||
if test -z "$gl_have_pthread"; then
|
||||
if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
|
||||
if { case "$host_os" in
|
||||
mingw*) true;;
|
||||
*) false;;
|
||||
esac
|
||||
}; then
|
||||
gl_threads_api=win32
|
||||
AC_DEFINE([USE_WIN32_THREADS], [1],
|
||||
[Define if the Win32 multithreading API can be used.])
|
||||
fi
|
||||
fi
|
||||
case "$gl_use_threads" in
|
||||
yes | windows | win32) # The 'win32' is for backward compatibility.
|
||||
if { case "$host_os" in
|
||||
mingw*) true;;
|
||||
*) false;;
|
||||
esac
|
||||
}; then
|
||||
gl_threads_api=windows
|
||||
AC_DEFINE([USE_WINDOWS_THREADS], [1],
|
||||
[Define if the native Windows multithreading API can be used.])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
AC_MSG_CHECKING([for multithread API to use])
|
||||
@ -295,50 +335,52 @@ AC_DEFUN([gl_DISABLE_THREADS], [
|
||||
|
||||
dnl Survey of platforms:
|
||||
dnl
|
||||
dnl Platform Available Compiler Supports test-lock
|
||||
dnl flavours option weak result
|
||||
dnl --------------- --------- --------- -------- ---------
|
||||
dnl Linux 2.4/glibc posix -lpthread Y OK
|
||||
dnl Platform Available Compiler Supports test-lock
|
||||
dnl flavours option weak result
|
||||
dnl --------------- --------- --------- -------- ---------
|
||||
dnl Linux 2.4/glibc posix -lpthread Y OK
|
||||
dnl
|
||||
dnl GNU Hurd/glibc posix
|
||||
dnl GNU Hurd/glibc posix
|
||||
dnl
|
||||
dnl FreeBSD 5.3 posix -lc_r Y
|
||||
dnl posix -lkse ? Y
|
||||
dnl posix -lpthread ? Y
|
||||
dnl posix -lthr Y
|
||||
dnl Ubuntu 14.04 posix -pthread Y OK
|
||||
dnl
|
||||
dnl FreeBSD 5.2 posix -lc_r Y
|
||||
dnl posix -lkse Y
|
||||
dnl posix -lthr Y
|
||||
dnl FreeBSD 5.3 posix -lc_r Y
|
||||
dnl posix -lkse ? Y
|
||||
dnl posix -lpthread ? Y
|
||||
dnl posix -lthr Y
|
||||
dnl
|
||||
dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
|
||||
dnl FreeBSD 5.2 posix -lc_r Y
|
||||
dnl posix -lkse Y
|
||||
dnl posix -lthr Y
|
||||
dnl
|
||||
dnl NetBSD 1.6 --
|
||||
dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
|
||||
dnl
|
||||
dnl OpenBSD 3.4 posix -lpthread Y OK
|
||||
dnl NetBSD 1.6 --
|
||||
dnl
|
||||
dnl MacOS X 10.[123] posix -lpthread Y OK
|
||||
dnl OpenBSD 3.4 posix -lpthread Y OK
|
||||
dnl
|
||||
dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
|
||||
dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
|
||||
dnl Mac OS X 10.[123] posix -lpthread Y OK
|
||||
dnl
|
||||
dnl HP-UX 11 posix -lpthread N (cc) OK
|
||||
dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
|
||||
dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
|
||||
dnl
|
||||
dnl HP-UX 11 posix -lpthread N (cc) OK
|
||||
dnl Y (gcc)
|
||||
dnl
|
||||
dnl IRIX 6.5 posix -lpthread Y 0.5
|
||||
dnl IRIX 6.5 posix -lpthread Y 0.5
|
||||
dnl
|
||||
dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
|
||||
dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
|
||||
dnl
|
||||
dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
|
||||
dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
|
||||
dnl -lpthread (gcc) Y
|
||||
dnl
|
||||
dnl Cygwin posix -lpthread Y OK
|
||||
dnl Cygwin posix -lpthread Y OK
|
||||
dnl
|
||||
dnl Any of the above pth -lpth 0.0
|
||||
dnl Any of the above pth -lpth 0.0
|
||||
dnl
|
||||
dnl Mingw win32 N OK
|
||||
dnl Mingw windows N OK
|
||||
dnl
|
||||
dnl BeOS 5 --
|
||||
dnl BeOS 5 --
|
||||
dnl
|
||||
dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
|
||||
dnl turned off:
|
||||
|
@ -1,5 +1,5 @@
|
||||
# uintmax_t.m4 serial 12
|
||||
dnl Copyright (C) 1997-2004, 2007-2010 Free Software Foundation, Inc.
|
||||
dnl Copyright (C) 1997-2004, 2007-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
@ -1,5 +1,5 @@
|
||||
# visibility.m4 serial 3 (gettext-0.18)
|
||||
dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc.
|
||||
# visibility.m4 serial 5 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2005, 2008, 2010-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -12,7 +12,7 @@ dnl __attribute__((__visibility__("hidden"))) and
|
||||
dnl __attribute__((__visibility__("default"))).
|
||||
dnl Does *not* test for __visibility__("protected") - which has tricky
|
||||
dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
|
||||
dnl MacOS X.
|
||||
dnl Mac OS X.
|
||||
dnl Does *not* test for __visibility__("internal") - which has processor
|
||||
dnl dependent semantics.
|
||||
dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
|
||||
@ -33,7 +33,8 @@ AC_DEFUN([gl_VISIBILITY],
|
||||
AC_CACHE_VAL([gl_cv_cc_vis_werror], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
AC_TRY_COMPILE([], [],
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[]], [[]])],
|
||||
[gl_cv_cc_vis_werror=yes],
|
||||
[gl_cv_cc_vis_werror=no])
|
||||
CFLAGS="$gl_save_CFLAGS"])
|
||||
@ -51,13 +52,15 @@ AC_DEFUN([gl_VISIBILITY],
|
||||
if test $gl_cv_cc_vis_werror = yes; then
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
fi
|
||||
AC_TRY_COMPILE(
|
||||
[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
|
||||
extern __attribute__((__visibility__("default"))) int exportedvar;
|
||||
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
|
||||
extern __attribute__((__visibility__("default"))) int exportedfunc (void);
|
||||
void dummyfunc (void) {}],
|
||||
[],
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
|
||||
extern __attribute__((__visibility__("default"))) int exportedvar;
|
||||
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
|
||||
extern __attribute__((__visibility__("default"))) int exportedfunc (void);
|
||||
void dummyfunc (void) {}
|
||||
]],
|
||||
[[]])],
|
||||
[gl_cv_cc_visibility=yes],
|
||||
[gl_cv_cc_visibility=no])
|
||||
CFLAGS="$gl_save_CFLAGS"])
|
||||
|
@ -1,5 +1,5 @@
|
||||
# wchar_t.m4 serial 3 (gettext-0.18)
|
||||
dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc.
|
||||
# wchar_t.m4 serial 4 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2002-2003, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -11,9 +11,13 @@ dnl Prerequisite: AC_PROG_CC
|
||||
AC_DEFUN([gt_TYPE_WCHAR_T],
|
||||
[
|
||||
AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
|
||||
[AC_TRY_COMPILE([#include <stddef.h>
|
||||
wchar_t foo = (wchar_t)'\0';], ,
|
||||
[gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <stddef.h>
|
||||
wchar_t foo = (wchar_t)'\0';]],
|
||||
[[]])],
|
||||
[gt_cv_c_wchar_t=yes],
|
||||
[gt_cv_c_wchar_t=no])])
|
||||
if test $gt_cv_c_wchar_t = yes; then
|
||||
AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
|
||||
fi
|
||||
|
14
m4/wint_t.m4
14
m4/wint_t.m4
@ -1,5 +1,5 @@
|
||||
# wint_t.m4 serial 4 (gettext-0.18)
|
||||
dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
|
||||
# wint_t.m4 serial 5 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2003, 2007-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -11,7 +11,9 @@ dnl Prerequisite: AC_PROG_CC
|
||||
AC_DEFUN([gt_TYPE_WINT_T],
|
||||
[
|
||||
AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
|
||||
[AC_TRY_COMPILE([
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||||
<wchar.h>.
|
||||
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
|
||||
@ -20,8 +22,10 @@ AC_DEFUN([gt_TYPE_WINT_T],
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <wchar.h>
|
||||
wint_t foo = (wchar_t)'\0';], ,
|
||||
[gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
|
||||
wint_t foo = (wchar_t)'\0';]],
|
||||
[[]])],
|
||||
[gt_cv_c_wint_t=yes],
|
||||
[gt_cv_c_wint_t=no])])
|
||||
if test $gt_cv_c_wint_t = yes; then
|
||||
AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
|
||||
fi
|
||||
|
@ -1,5 +1,5 @@
|
||||
# xsize.m4 serial 4
|
||||
dnl Copyright (C) 2003-2004, 2008-2010 Free Software Foundation, Inc.
|
||||
# xsize.m4 serial 5
|
||||
dnl Copyright (C) 2003-2004, 2008-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -8,6 +8,5 @@ AC_DEFUN([gl_XSIZE],
|
||||
[
|
||||
dnl Prerequisites of lib/xsize.h.
|
||||
AC_REQUIRE([gl_SIZE_MAX])
|
||||
AC_REQUIRE([AC_C_INLINE])
|
||||
AC_CHECK_HEADERS([stdint.h])
|
||||
])
|
||||
|
@ -8,13 +8,14 @@
|
||||
# Please note that the actual code of GNU gettext is covered by the GNU
|
||||
# General Public License and is *not* in the public domain.
|
||||
#
|
||||
# Origin: gettext-0.18
|
||||
GETTEXT_MACRO_VERSION = 0.18
|
||||
# Origin: gettext-0.19
|
||||
GETTEXT_MACRO_VERSION = 0.19
|
||||
|
||||
PACKAGE = @PACKAGE@
|
||||
VERSION = @VERSION@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
|
||||
SED = @SED@
|
||||
SHELL = /bin/sh
|
||||
@SET_MAKE@
|
||||
|
||||
@ -56,8 +57,8 @@ XGETTEXT_ = @XGETTEXT@
|
||||
XGETTEXT_no = @XGETTEXT@
|
||||
XGETTEXT_yes = @XGETTEXT_015@
|
||||
XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
|
||||
MSGMERGE = msgmerge --previous
|
||||
MSGMERGE_UPDATE = @MSGMERGE@ --previous --update
|
||||
MSGMERGE = msgmerge
|
||||
MSGMERGE_UPDATE = @MSGMERGE@ --update
|
||||
MSGINIT = msginit
|
||||
MSGCONV = msgconv
|
||||
MSGFILTER = msgfilter
|
||||
@ -76,6 +77,16 @@ POTFILES = \
|
||||
|
||||
CATALOGS = @CATALOGS@
|
||||
|
||||
POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot
|
||||
POFILESDEPS_yes = $(POFILESDEPS_)
|
||||
POFILESDEPS_no =
|
||||
POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT))
|
||||
|
||||
DISTFILESDEPS_ = update-po
|
||||
DISTFILESDEPS_yes = $(DISTFILESDEPS_)
|
||||
DISTFILESDEPS_no =
|
||||
DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO))
|
||||
|
||||
# Makevars gets inserted here. (Don't remove this line!)
|
||||
|
||||
.SUFFIXES:
|
||||
@ -96,14 +107,14 @@ CATALOGS = @CATALOGS@
|
||||
mv t-$@ $@
|
||||
|
||||
|
||||
all: check-macro-version all-@USE_NLS@
|
||||
all: all-@USE_NLS@
|
||||
|
||||
all-yes: stamp-po
|
||||
all-no:
|
||||
|
||||
# Ensure that the gettext macros and this Makefile.in.in are in sync.
|
||||
check-macro-version:
|
||||
@test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
|
||||
CHECK_MACRO_VERSION = \
|
||||
test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
|
||||
|| { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
|
||||
exit 1; \
|
||||
}
|
||||
@ -123,6 +134,7 @@ check-macro-version:
|
||||
# $(POFILES) has been designed to not touch files that don't need to be
|
||||
# changed.
|
||||
stamp-po: $(srcdir)/$(DOMAIN).pot
|
||||
@$(CHECK_MACRO_VERSION)
|
||||
test ! -f $(srcdir)/$(DOMAIN).pot || \
|
||||
test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
|
||||
@test ! -f $(srcdir)/$(DOMAIN).pot || { \
|
||||
@ -137,11 +149,29 @@ stamp-po: $(srcdir)/$(DOMAIN).pot
|
||||
|
||||
# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
|
||||
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
|
||||
# The determination of whether the package xyz is a GNU one is based on the
|
||||
# heuristic whether some file in the top level directory mentions "GNU xyz".
|
||||
# If GNU 'find' is available, we avoid grepping through monster files.
|
||||
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
|
||||
if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
|
||||
package_gnu='GNU '; \
|
||||
package_gnu="$(PACKAGE_GNU)"; \
|
||||
test -n "$$package_gnu" || { \
|
||||
if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
|
||||
LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \
|
||||
-size -10000000c -exec grep 'GNU @PACKAGE@' \
|
||||
/dev/null '{}' ';' 2>/dev/null; \
|
||||
else \
|
||||
LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
|
||||
fi; \
|
||||
} | grep -v 'libtool:' >/dev/null; then \
|
||||
package_gnu=yes; \
|
||||
else \
|
||||
package_gnu=no; \
|
||||
fi; \
|
||||
}; \
|
||||
if test "$$package_gnu" = "yes"; then \
|
||||
package_prefix='GNU '; \
|
||||
else \
|
||||
package_gnu=''; \
|
||||
package_prefix=''; \
|
||||
fi; \
|
||||
if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
|
||||
msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
|
||||
@ -161,7 +191,7 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
|
||||
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
|
||||
--files-from=$(srcdir)/POTFILES.in \
|
||||
--copyright-holder='$(COPYRIGHT_HOLDER)' \
|
||||
--package-name="$${package_gnu}@PACKAGE@" \
|
||||
--package-name="$${package_prefix}@PACKAGE@" \
|
||||
--package-version='@VERSION@' \
|
||||
--msgid-bugs-address="$$msgid_bugs_address" \
|
||||
;; \
|
||||
@ -189,9 +219,10 @@ $(srcdir)/$(DOMAIN).pot:
|
||||
|
||||
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
|
||||
# Note that a PO file is not touched if it doesn't need to be changed.
|
||||
$(POFILES): $(srcdir)/$(DOMAIN).pot
|
||||
$(POFILES): $(POFILESDEPS)
|
||||
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
|
||||
if test -f "$(srcdir)/$${lang}.po"; then \
|
||||
test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \
|
||||
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||
echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
|
||||
cd $(srcdir) \
|
||||
@ -352,7 +383,7 @@ maintainer-clean: distclean
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
dist distdir:
|
||||
$(MAKE) update-po
|
||||
test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS)
|
||||
@$(MAKE) dist2
|
||||
# This is a separate target because 'update-po' must be executed before.
|
||||
dist2: stamp-po $(DISTFILES)
|
||||
|
42
po/Makevars
42
po/Makevars
@ -34,9 +34,49 @@ COPYRIGHT_HOLDER = Free Software Foundation, Inc.
|
||||
# It can be your email address, or a mailing list address where translators
|
||||
# can write to without being subscribed, or the URL of a web page through
|
||||
# which the translators can contact you.
|
||||
MSGID_BUGS_ADDRESS = gnupg-i18n@gnupg.org
|
||||
MSGID_BUGS_ADDRESS = translations@gnupg.org
|
||||
|
||||
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
||||
# message catalogs shall be used. It is usually empty.
|
||||
EXTRA_LOCALE_CATEGORIES =
|
||||
|
||||
# This tells whether or not to prepend "GNU " prefix to the package
|
||||
# name that gets inserted into the header of the $(DOMAIN).pot file.
|
||||
# Possible values are "yes", "no", or empty. If it is empty, try to
|
||||
# detect it automatically by scanning the files in $(top_srcdir) for
|
||||
# "GNU packagename" string.
|
||||
PACKAGE_GNU = no
|
||||
|
||||
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
||||
# message catalogs shall be used. It is usually empty.
|
||||
EXTRA_LOCALE_CATEGORIES =
|
||||
|
||||
# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
|
||||
# context. Possible values are "yes" and "no". Set this to yes if the
|
||||
# package uses functions taking also a message context, like pgettext(), or
|
||||
# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
|
||||
USE_MSGCTXT = no
|
||||
|
||||
# These options get passed to msgmerge.
|
||||
# Useful options are in particular:
|
||||
# --previous to keep previous msgids of translated messages,
|
||||
# --quiet to reduce the verbosity.
|
||||
MSGMERGE_OPTIONS = --previous
|
||||
|
||||
# These options get passed to msginit.
|
||||
# If you want to disable line wrapping when writing PO files, add
|
||||
# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
|
||||
# MSGINIT_OPTIONS.
|
||||
MSGINIT_OPTIONS =
|
||||
|
||||
# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
|
||||
# has changed. Possible values are "yes" and "no". Set this to no if
|
||||
# the POT file is checked in the repository and the version control
|
||||
# program ignores timestamps.
|
||||
PO_DEPENDS_ON_POT = yes
|
||||
|
||||
# This tells whether or not to forcibly update $(DOMAIN).pot and
|
||||
# regenerate PO files on "make dist". Possible values are "yes" and
|
||||
# "no". Set this to no if the POT file and PO files are maintained
|
||||
# externally.
|
||||
DIST_DEPENDS_ON_UPDATE_PO = yes
|
||||
|
@ -1,3 +1,4 @@
|
||||
# This file, Rules-quot, can be copied and used freely without restrictions.
|
||||
# Special Makefile rules for English message catalogs with quotation marks.
|
||||
|
||||
DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
|
||||
@ -14,13 +15,23 @@ en@boldquot.po-update: en@boldquot.po-update-en
|
||||
|
||||
.insert-header.po-update-en:
|
||||
@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
|
||||
if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
|
||||
if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
|
||||
tmpdir=`pwd`; \
|
||||
echo "$$lang:"; \
|
||||
ll=`echo $$lang | sed -e 's/@.*//'`; \
|
||||
LC_ALL=C; export LC_ALL; \
|
||||
cd $(srcdir); \
|
||||
if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
|
||||
if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \
|
||||
| $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \
|
||||
{ case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \
|
||||
$(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \
|
||||
;; \
|
||||
*) \
|
||||
$(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \
|
||||
;; \
|
||||
esac } 2>/dev/null > $$tmpdir/$$lang.new.po \
|
||||
; then \
|
||||
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
||||
rm -f $$tmpdir/$$lang.new.po; \
|
||||
else \
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Output a system dependent set of variables, describing how to set the
|
||||
# run time search path of shared libraries in an executable.
|
||||
#
|
||||
# Copyright 1996-2010 Free Software Foundation, Inc.
|
||||
# Copyright 1996-2014 Free Software Foundation, Inc.
|
||||
# Taken from GNU libtool, 2001
|
||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
#
|
||||
@ -25,7 +25,7 @@
|
||||
# known workaround is to choose shorter directory names for the build
|
||||
# directory and/or the installation directory.
|
||||
|
||||
# All known linkers require a `.a' archive for static linking (except MSVC,
|
||||
# All known linkers require a '.a' archive for static linking (except MSVC,
|
||||
# which needs '.lib').
|
||||
libext=a
|
||||
shrext=.so
|
||||
@ -57,13 +57,6 @@ else
|
||||
aix*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
darwin*)
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
@ -72,9 +65,7 @@ else
|
||||
irix5* | irix6* | nonstopux*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
newsos6)
|
||||
;;
|
||||
linux* | k*bsd*-gnu)
|
||||
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||||
case $cc_basename in
|
||||
ecc*)
|
||||
wl='-Wl,'
|
||||
@ -85,17 +76,26 @@ else
|
||||
lf95*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
pgcc | pgf77 | pgf90)
|
||||
nagfor*)
|
||||
wl='-Wl,-Wl,,'
|
||||
;;
|
||||
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
ccc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
xl* | bgxl* | bgf* | mpixl*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
como)
|
||||
wl='-lopt='
|
||||
;;
|
||||
*)
|
||||
case `$CC -V 2>&1 | sed 5q` in
|
||||
*Sun\ F* | *Sun*Fortran*)
|
||||
wl=
|
||||
;;
|
||||
*Sun\ C*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
@ -103,13 +103,24 @@ else
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
newsos6)
|
||||
;;
|
||||
*nto* | *qnx*)
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
rdos*)
|
||||
;;
|
||||
solaris*)
|
||||
wl='-Wl,'
|
||||
case $cc_basename in
|
||||
f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
|
||||
wl='-Qoption ld '
|
||||
;;
|
||||
*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sunos4*)
|
||||
wl='-Qoption ld '
|
||||
@ -171,15 +182,14 @@ if test "$with_gnu_ld" = yes; then
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
||||
# that the semantics of dynamic libraries on AmigaOS, at least up
|
||||
# to version 4, is to share data among multiple programs linked
|
||||
# with the same dynamic library. Since this doesn't match the
|
||||
# behavior of shared libraries on other platforms, we cannot use
|
||||
# them.
|
||||
ld_shlibs=no
|
||||
case "$host_cpu" in
|
||||
powerpc)
|
||||
;;
|
||||
m68k)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
beos*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
@ -198,11 +208,13 @@ if test "$with_gnu_ld" = yes; then
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
haiku*)
|
||||
;;
|
||||
interix[3-9]*)
|
||||
hardcode_direct=no
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
gnu* | linux* | k*bsd*-gnu)
|
||||
gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
@ -325,10 +337,14 @@ else
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# see comment about different semantics on the GNU ld section
|
||||
ld_shlibs=no
|
||||
case "$host_cpu" in
|
||||
powerpc)
|
||||
;;
|
||||
m68k)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
bsdi[45]*)
|
||||
;;
|
||||
@ -342,29 +358,16 @@ else
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
hardcode_direct=no
|
||||
if test "$GCC" = yes ; then
|
||||
if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
|
||||
:
|
||||
else
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
;;
|
||||
*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
esac
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
dgux*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
freebsd1*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
freebsd2.2*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
freebsd2*)
|
||||
freebsd2.[01]*)
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
@ -420,6 +423,8 @@ else
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
*nto* | *qnx*)
|
||||
;;
|
||||
openbsd*)
|
||||
if test -f /usr/libexec/ld.so; then
|
||||
hardcode_direct=yes
|
||||
@ -515,7 +520,12 @@ case "$host_os" in
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
amigaos*)
|
||||
library_names_spec='$libname.a'
|
||||
case "$host_cpu" in
|
||||
powerpc*)
|
||||
library_names_spec='$libname$shrext' ;;
|
||||
m68k)
|
||||
library_names_spec='$libname.a' ;;
|
||||
esac
|
||||
;;
|
||||
beos*)
|
||||
library_names_spec='$libname$shrext'
|
||||
@ -534,19 +544,18 @@ case "$host_os" in
|
||||
dgux*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
freebsd1*)
|
||||
freebsd[23].*)
|
||||
library_names_spec='$libname$shrext$versuffix'
|
||||
;;
|
||||
freebsd* | dragonfly*)
|
||||
case "$host_os" in
|
||||
freebsd[123]*)
|
||||
library_names_spec='$libname$shrext$versuffix' ;;
|
||||
*)
|
||||
library_names_spec='$libname$shrext' ;;
|
||||
esac
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
gnu*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
haiku*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
case $host_cpu in
|
||||
ia64*)
|
||||
@ -582,7 +591,7 @@ case "$host_os" in
|
||||
;;
|
||||
linux*oldld* | linux*aout* | linux*coff*)
|
||||
;;
|
||||
linux* | k*bsd*-gnu)
|
||||
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
knetbsd*-gnu)
|
||||
@ -594,7 +603,7 @@ case "$host_os" in
|
||||
newsos6)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
nto-qnx*)
|
||||
*nto* | *qnx*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
openbsd*)
|
||||
@ -625,6 +634,9 @@ case "$host_os" in
|
||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
tpf*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
uts4*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
|
Loading…
x
Reference in New Issue
Block a user